我想使用Perl脚本将XLS表格中的一系列单元格保存为HTML文件。我搜索了解决这个问题的方法。但是还没找到。
但是使用Excel VBA有一个类似的解决方案:
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)错误0x800a03ec 在METHOD / PROPERTYGET中“添加” H:\ test_code \数据>
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();
有人可以为这个问题提出解决方案。
注意,我想保留列的所有格式,(十进制,位数,$符号,颜色等)。任何不涉及使用商业图书馆的解决方案都表示赞赏。
谢谢, RIZWAN。
答案 0 :(得分:2)
这对我有用,至少正在生成HTML文件:
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;