Martin Fabiani
ExcelPerl - Excel mit Perl-Einzeilern bearbeiten
- Vortragender: Martin Fabiani
- Typ/Dauer: Blitzvortrag (5min)
- Titel: ExcelPerl - Excel mit Perl-Einzeilern bearbeiten
- Titel EN: ExcelPerl - Editing Excel with Perl Oneliners
- Abstract:
Ich verwende häufig für Datenanalysen oder die Erstellung von Testdaten Excel, was manchmal recht umständlich war (vielleicht, weil ich von VB-Script nur wenig Ahnung habe). Auf einem Perl-Mongers-Treffen habe ich von xlsPerl gehört, das - ähnlich wie AWK - einen Lesezugriff auf Excel bietet. Ich brauchte jedoch mehr, und habe so ExcelPerl entwickelt, das über Win32::OLE auf Excel zugreift. Damit kann ich schnell Änderungen an einer Excel-Datei vornehmen, sogar, wenn ich diese gerade geöffnet habe. Dabei kann ich nicht nur auf Werte, sondern auch auf Formatierungen und sogar das gesammte Excel-Objektmodell zugreifen. Wenn ich Änderungen vornehme, kann ich mir diese nachher auch anschauen und eventuell speichern. Beispiel 1: In der Excel-Datei in der vierten Spalte alle Werte um 1 erhöhen und dabei die Überschrift in der ersten Zeile überspringen: excelPerl -ane "$F[3]++" -h 1 file.xls Beispiel 2: eine Excel-Datei in CSV ausgeben: excelPerl.pl ^ -begin "use Text::CSV_XS; $csv = Text::CSV_XS->new( { binary => 1} )" ^ -ane "$csv->combine(@F); print $csv->string, $/" ^ file.xls Beispiel 3: die erste Spalte auf die Schriftart Courier New setzen: excelPerl.pl -ane "$C[0]->{Font}->{Name} = 'Courier New'" test.xls - Abstract EN:
I often use Excel for analyzing data or creating testdata. This used to be difficult (perhaps because I'm not very good at programming with VB-Script). On a PerlMongers meeting I heard about xlsPerl, which allows read access to excel (like AWK). But I needed more, so I developed ExcelPerl which accesses Excel with Win32::OLE. This way I can do fast changes to excel, even if the excel file is already open. I can access values and formats and the whole excel object model. If I do changes with perl, I can check them and decide if I want to save them. Example 1: I'd like to increase all values (except the headline in line 1) of the forth column by one: excelPerl -ane "$F[3]++" -h 1 -f file.xls Example 2: output as CSV: excelPerl.pl ^ -begin "use Text::CSV_XS; $csv = Text::CSV_XS->new( { binary => 1} )" ^ -ane "$csv->combine(@F); print $csv->string, $/" ^ -f file.xls Example 3: set the first column to the font Courier New: excelPerl.pl -ane "$C[0]->{Font}->{Name} = 'Courier New'" -f test.xls


