Добавление к электронным таблицам Excel в Perl в Windows И Linux

Я хочу добавить в таблицу Excel. Win32::OLE отлично работает с этим, но не работает на машинах Linux. Spreadsheet::WriteExcel, похоже, не может добавлять, хотя он может работать на обеих платформах. Я узнал об Excel::Writer::XLSX, но он сообщает, что у него не так много функций, как у электронных таблиц...

Я также хотел бы создать гиперссылки, поэтому щелчок по тексту приведет вас к другому листу в книге Excel. Возможно ли это и на каком (Excelwriter/etc)?

Итак, два вопроса: 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;

person petranaya    schedule 19.05.2011    source источник
comment
Возможно, вы хотели бы показать код.   -  person Fosco    schedule 19.05.2011
comment
Почему? Все, что я хочу сделать, это добавить файл на обеих платформах и создать гиперссылки для ссылки на другие листы. Я не знаю, какой код использовать прямо сейчас, и даже не знаю, возможно ли это. Я добавлю код, чтобы показать, что я сделал с помощью win32::OLE, если это поможет, я думаю?   -  person petranaya    schedule 19.05.2011


Ответы (1)


Это частичный и, возможно, неверный ответ:

Используйте пакет Open XML SDK для офиса. Любой из файлов *.xlsx на самом деле является файлом *.zip с множеством файлов xml внутри, описывающих документ. Используя SDK, вы можете создавать ссылки между электронными таблицами и книгами. К сожалению, это работает только в Windows... :(

person bleepzter    schedule 19.05.2011
comment
Да, это должно работать на Windows И Linux... В любом случае, спасибо. Значит, вы не знаете ни одного другого метода, скажем, Spreadsheet::WriteExcel, который может создавать гиперссылки на другие листы? - person petranaya; 19.05.2011
comment
Извините, я не такой. Хотя мне было интересно, можете ли вы использовать OpenOffice SDK, чтобы делать то, что вам нужно? Он по-прежнему использует ту же спецификацию Open Xml, и вы можете загрузить схему для него отсюда: microsoft.com/downloads/en/ - person bleepzter; 19.05.2011