Wie kann ich eine vorhandene Excel-Arbeitsmappe mit Perl bearbeiten?

7

Mit Spreadsheet::WriteExcel kann ich eine neue Arbeitsmappe erstellen, aber was, wenn ich eine öffnen möchte Bestehende Buch und ändern Sie bestimmte Spalten? Wie würde ich das erreichen?

Ich könnte alle Daten aus dem Blatt mit Spreadsheet::ParseExcel analysieren und dann mit zurückschreiben neue Werte in bestimmten Zeilen / Spalten mit Spreadsheet::WriteExcel . Gibt es ein Modul, das die beiden bereits kombiniert?

Hauptsächlich möchte ich nur ein .xls öffnen, bestimmte Zeilen / Spalten überschreiben und speichern.

    
user105033 02.09.2009, 17:02
quelle

4 Antworten

13

Spreadsheet :: ParseExcel liest vorhandene Excel-Dateien ein:

%Vor%

Aber was Sie wirklich wollen, ist Spreadsheet :: ParseExcel :: SaveParser , eine Kombination aus Spreadsheet :: ParseExcel und Spreadsheet::WriteExcel . Es gibt ein Beispiel unten in der Dokumentation.

    
Ether 02.09.2009, 17:09
quelle
9

Wenn Sie Excel installiert haben, dann ist es fast trivial, dies mit Win32::OLE zu tun. Hier ist das Beispiel aus Win32::OLE eigener Dokumentation:

%Vor%

Grundsätzlich bietet Win32::OLE alles, was für eine VBA- oder Visual Basic-Anwendung verfügbar ist, die eine große Vielfalt an Dingen beinhaltet - von Excel- und Word-Automatisierung bis zum Aufzählen und Montieren von Netzwerklaufwerken über Windows Script Host. Es ist Standard mit den letzten Ausgaben von ActivePerl.

    
j_random_hacker 03.09.2009 09:50
quelle
3

Es gibt einen Abschnitt der Spreadsheet :: WriteExcel-Dokumentation, der Ändern und Neuschreiben von Tabellen behandelt.

  

Eine Excel-Datei ist eine Binärdatei in einer Binärdatei. Es enthält mehrere miteinander verknüpfte Prüfsummen, und wenn nur ein Byte geändert wird, kann es beschädigt werden.

     

Damit können Sie nicht einfach eine Excel-Datei anhängen oder aktualisieren. Die einzige Möglichkeit, dies zu erreichen, besteht darin, die gesamte Datei in den Speicher einzulesen, die erforderlichen Änderungen oder Ergänzungen vorzunehmen und die Datei dann erneut zu schreiben.

     

Sie können eine Excel-Datei mit dem Spreadsheet :: ParseExcel :: SaveParser-Modul lesen und neu schreiben, das ein Wrapper um Spreadsheet :: ParseExcel und Spreadsheet :: WriteExcel ist. Es ist Teil des Pakets Spreadsheet :: ParseExcel .

Es gibt auch ein Beispiel.

    
wes 02.09.2009 17:12
quelle
1

Das Modul Spreadsheet :: ParseExcel :: SaveParser ist ein Wrapper für Spreadsheet :: ParseExcel und Spreadsheet :: WriteExcel.

Ich habe vor kurzem die Dokumentation mit, was ich hoffe, ist ein deutlicheres Beispiel, wie dies zu tun .

    
jmcnamara 02.09.2009 19:23
quelle

Tags und Links