2010-10-26 10 views
5

Sto provando a generare un file xls con Spreadsheet :: SimpleExcel che chiama una funzione definita in un componente aggiuntivo di terze parti (Bloomberg, se è importante). Il pacchetto WriteExcel sottostante non mi consente di scrivere questo perché non sa di questa funzione aggiuntiva. Vedo la gigantesca tabella hash delle funzioni integrate che il modulo conosce e potrebbe potenzialmente aggiungere questa funzione, ma non conosco gli attributi della funzione, in particolare il 'codice ptg'.generando fogli di calcolo Excel in perl che fanno riferimento a funzioni aggiuntive di terze parti

C'è un modo per determinare il codice ptg (presumo che si tratti di un codice operativo) di questa funzione di terze parti, o c'è un modo per ingannare il modulo per farmi scrivere queste funzioni senza di esso dover conoscere questi dettagli? O qualche terzo piano a cui non ho pensato?

risposta

2

Spreadsheet::WriteExcelXML e Excel::Writer::XLSX devono essere in grado di generare file Excel con funzioni di terze parti.

Entrambi i moduli utilizzano la stessa interfaccia di Spreadsheet :: WriteExcel anche se con meno funzioni.

+0

Lo controllerò. Riconosco che tu sei l'autore di WriteExcel, quindi grazie per la risposta. – frankc

+0

WriteExcelXML ha funzionato. Ho dovuto cambiare SimpleExcel per usare WriteExcelXML ma solo richiesto s/WriteExcel/WriteExcelXML/g e s/addworksheet/add_worksheet/g – frankc

+0

Potresti provare anche Excel :: Writer :: XLSX se hai una possibilità e fammi sapere se lavori. – jmcnamara

2

Penso che sia necessario utilizzare Win32 :: OLE ed è un po 'complicato. Prova:

$xls->AddIns->Add($xll_path); 
$xls->RegisterXLL($xll_file); 

dove $ xll_path è il percorso completo del XLL per Bloomberg e $ xll_file è solo il nome XLL.

Problemi correlati