使用Win32 :: OLE Perl模块将Excel中的一系列单元格保存为HTML

我想使用Perl脚本将一系列单元格作为HTML文件保存在XLS工作表中。 我已经search了解决这个问题的方法。 但是还没有find。

但是有一个类似于这个使用Excel VBA的解决scheme:

With ActiveWorkbook.PublishObjects.Add(xlSourceRange, _ "C:\Documents and Settings\Tim\Desktop\Page.htm", _ Selection.Parent.Name, _ Selection.Address(), _ xlHtmlStatic, "divExcelExport", _ "TestTitle") .Publish (True) .AutoRepublish = False End With 

所以,我试图将其转换为Perl代码,但它给了我以下错误:

H:\ test_code \ data> perl a.pl Win32 :: OLE(0.1702)METHOD / PROPERTYGET中的错误0x800a03ec“添加”H:\ test_code \ data>

 use strict; use warnings "all"; use Win32::OLE; my $Excel = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application','Quit'); my $Book = $Excel->Workbooks->Open("H:\\test_code\\data\\test.xls"); my $Sheet = $Book->Worksheets(1); $Book->PublishObjects->Add({SourceType=>5, # int value for xlSourceRange FileName => "H:\\test_code\\data\\test2.html", Source => $Sheet->Range("A1:B2")->Address, HtmlType => 0, # xlHtmlStatic s int value. }); print Win32::OLE->LastError(); $Book->Close(0); exit(); 

有人可以为这个问题提出一个解决scheme。

请注意,我想保留列的所有格式,(十进制,数字位数,$符号,颜色等)。 任何不涉及使用商业图书馆的解决scheme,赞赏。

谢谢,Rizwan。

这适用于我,至lessHTML文件正在生成:

 use strict; use warnings; use Win32::OLE; use Win32::OLE::Const 'Microsoft Excel'; my $Excel = Win32::OLE->new('Excel.Application','Quit'); my $Book = $Excel->Workbooks->Open("C:\\test.xls"); $Book->PublishObjects->Add(xlSourceRange, "C:\\output_file.htm", 'Sheet1', '$C$3:$C$10', xlHtmlStatic )->Publish(1); $Book->Close(0); $Excel->Quit;