使用Delphi和OLE将几个html文件加载到一个Excel工作簿的单独表格中



我有三个html文件test1、test2和test3。我想把这3个文件加载到一个Excel工作簿中,每个HTML文件分别放在test1、test2和test3上。我想使用Delphi和OLE自动化。也许在VB中有更多这样的内容,但我找不到Delphi代码

感谢

正如我在评论中提到的,如果您尝试加载。Html文件到工作簿、Excel中将从工作簿中删除现有的工作表,然后加载。Html转换为一个新的、单个的工作表,因此如果您尝试打开多个工作表。Html文件在同一个工作簿中,您最终只加载最后一个。不是全部。Html文件似乎可以被Excel理解,顺便说一句,它经常抱怨这样的事情因为无法访问必要的。Css文件。

因此,下面的代码通过加载。Html文件到单独的工作簿中然后复制第二个到第N个的单个工作表。Html文件转换为第一个文件它保存在C:\Temp中。希望代码能够合理地自我解释,但如果有疑问,请询问。我只展示了处理第一个&第二。Html文件,因为您只需重复第二个文件的步骤对于第3个到第N个。

uses
Variants, ComObj;
procedure TForm1.btnLoadClick(Sender: TObject);
var
vExcel,
vWorkbook1,
vWorkBook2,
vWorkSheet,
vWorkSheet2,
vSourceRange,
vDestRange : OleVariant;
const
xlOpenXMLWorkbook = $00000033;  // borrowed from Excel 2010 type lib import
begin
vExcel := CreateOleObject('Excel.Application');
vExcel.Visible := True;
vExcel.DisplayAlerts := False;
try
//   The following starts a new workbook and loads the first .Html file
vWorkBook1 := vExcel.WorkBooks.Open('d:aaad7htmlInputs.html');
//   Next, save it in C:Temp in XLSX format
vWorkBook1.SaveAs(FileName := 'C:temp' + 'Output.Xlsx', FileFormat:= xlOpenXMLWorkbook);
//  Next, open another wokkbook with the 2nd .Html file
vWorkBook2 := vExcel.WorkBooks.Open('d:aaad7htmlTest.Html');
//  The next bit uses Excel Range objects to make a copy of the worksheet from the 2nd
//  workbook into a new worksheet in
vSourceRange := vWorkBook2.WorkSheets[1].UsedRange;
vWorkSheet := vWorkBook1.WorkSheets.Add;
vDestRange := vWorkSheet.Range['A1', 'A1'];
vSourceRange.Copy(vDestRange);
vWorkBook2.Close;
vWorkBook1.SaveAs(FileName := 'C:temp' + 'Output.Xlsx', FileFormat:= xlOpenXMLWorkbook);
//   for the  3rd to Nth .Html files, repeat the steps starting with
//       vWorkBook2 := vExcel.WorkBooks.Open([...])

finally
vWorkBook1 := UnAssigned;
vWorkBook2 := UnAssigned;
vExcel := UnAssigned;
end;
end;

相关内容

最新更新