2011-05-19 61 views
0

我想附加到Excel电子表格。 Win32 :: OLE完全适用于此,但它在Linux机器上无法使用。 Spreadsheet :: WriteExcel似乎无法追加,但它可以在两个平台上工作。我发现了关于Excel :: Writer :: XLSX,但它报告说它没有电子表格那样多的功能...在Windows和Linux上添加到Perl Excel电子表格

我还想创建超链接,所以点击一些文本会引导你到另一个文本Excel工作簿中的工作表。这是可能的,并在哪一个(Excelwriter /等)?

所以有两个问题: 1)我应该使用什么,以便我可以在两个平台上工作时附加到电子表格?' 2)是否可以创建超链接来导向其他工作表并使用哪一个?

下面是我用的Win32 :: OLE是追加新的工作表的代码:

use Win32::OLE; 
use Win32::OLE::Const 'Microsoft Excel'; 
print "Opening Excel...\n"; 

$Excel = Win32::OLE->GetActiveObject('Excel.Application') 
    || Win32::OLE->new('Excel.Application', 'Quit'); 

#appending to existing excel file 
my $book = $Excel->Workbooks->Open($full_name) || die "Error: Could not open Excel workbook"; 

#putting this sheet at the beginning 
my $sheet = $book->Worksheets->Add({Before => $book->Worksheets(1)}) or die "Error: " . Win32::OLE->LastError; 
+0

也许你想展示一些代码 – Fosco 2011-05-19 19:22:18

+0

为什么?我想要做的就是在两个平台上追加到一个文件并创建链接到其他工作表的超链接。不知道现在使用什么代码,甚至不知道它是否可能。我会添加代码,以显示我使用win32 :: OLE做了什么,如果这有助于我猜测的话? – petranaya 2011-05-19 19:36:25

回答

0

这是局部的,也许一个非有效的答案:

使用的Office开放式XML SDK 。任何* .xlsx文件实际上都是* .zip文件,其中包含许多描述文档的xml文件。使用sdk,您可以在电子表格和工作簿之间建立链接。不幸的是,它仅适用于Windows ... :(

+0

是的,它必须工作Windows和Linux ...尽管如此感谢所以你不知道任何其他方法说电子表格:: WriteExcel,可以创建超链接到其他工作表? – petranaya 2011-05-19 19:33:14

+0

对不起,我不是。虽然我想知道如果你可以使用OpenOffice SDK来完成你需要实现的功能?它仍然使用相同的Open Xml规范,你可以从这里下载它的模式:http://www.microsoft.com/downloads/en/details.aspx? FAMILYID = 15805380-F2C0-4B80-9AD1-2CB0C3 00AEF9 – bleepzter 2011-05-19 19:35:46