2011-03-29 61 views
0

我想使用Perl腳本將一系列單元格作爲HTML文件保存在XLS工作表中。我已經搜索瞭解決這個問題的方法。但還沒有找到。使用Win32 :: OLE將Excel中的一系列單元格保存爲HTML Perl模塊

然而,有類似這樣使用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 \數據> 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。

回答

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; 
+0

由於超視距這似乎工作。該捕獲是使用Win32 :: OLE :: Const,並直接使用常量而不是其整數值。 – rizwanhudda 2011-03-31 07:38:02

相關問題