Packages / openSUSE Leap 15.6 / Unspecified / perl-Spreadsheet-ReadSXC
[Source: perl-Spreadsheet-ReadSXC]
Package: perl-Spreadsheet-ReadSXC (0.380.0-bp156.1.1)
[Project overview: libspreadsheet-readsxc-perl]
OpenOffice-1.x-Tabellendaten extrahieren
Spreadsheet::ReadSXC extrahiert Daten aus OpenOffice-1.x-Tabellendateien
(.sxc). Es exportiert die Funktion read_sxc(), die einen Dateinamen und eine
optionale Referenz auf einen Hash von Optionen als Argumente nimmt und eine
Referenz auf einen Hash von Referenzen auf zweidimensionale Arrays
zurückgibt. Die Hash-Schlüssel entsprechen den Namen der Arbeitsblätter in
der OpenOffice-Arbeitsmappe. Die zweidimensionalen Arrays entsprechen Zeilen
und Zellen in den jeweiligen Tabellen. Wenn Ihnen das nicht gefällt, weil
die Reihenfolge der Blätter in einem Hash nicht erhalten bleibt, lesen Sie
weiter. Die Option 'OrderBySheet' liefert stattdessen ein Array von Hashes.
Wenn Sie die .sxc-Datei selbst entpacken möchten, können Sie stattdessen die
Funktion read_xml_file() verwenden und den Pfad zu content.xml als Argument
übergeben. Oder Sie können die XML-Zeichenkette aus content.xml extrahieren
und die Zeichenkette an die Funktion read_xml_string() übergeben. Beide
Funktionen nehmen auch eine Referenz auf einen Hash von Optionen als
optionales zweites Argument.
Spreadsheet::ReadSXC verwendet XML::Twig zum Parsen des in .sxc-Dateien
enthaltenen XML. Nur die Inhalte von text:p-Elementen werden zurückgegeben,
nicht die tatsächlichen Werte von table:value-Attributen. Zum Beispiel könnte
eine Zelle ein table:value-type-Attribut von "currency", ein
table:value-Attribut von "-1500.99" und ein table:currency-Attribut von
"USD" haben. Das text:p-Element würde "-$1,500.99" enthalten. Dies ist die
Zeichenkette, die von der Funktion read_sxc() zurückgegeben wird, nicht der
Wert -1500.99.
Spreadsheet::ReadSXC wurde mit dem Datenimport in eine SQL-Datenbank im Sinn
geschrieben. Daher entsprechen leere Tabellenzellen undef-Werten in
Array-Zeilen. Der Beispielcode oben zeigt, wie man undef-Werte durch leere
Zeichenketten ersetzt.
Wenn die .sxc-Datei eine leere Tabelle enthält, zeigt ihr Hash-Element auf
ein leeres Array (es sei denn, Sie verwenden die Option 'NoTruncate', in
diesem Fall zeigt es auf ein Array eines Arrays, das ein undefiniertes
Element enthält).
OpenOffice verwendet UTF-8-Kodierung. Es hängt von Ihrer Umgebung ab, wie die
vom XML-Parser zurückgegebenen Daten am besten behandelt werden:
use Unicode::String qw(latin1 utf8);
$unicode_string = utf8($$workbook_ref{"Sheet1"}[0][0])->as_string;
$latin1_string = utf8($$workbook_ref{"Sheet1"}[0][0])->latin1;
Natürlich gibt es auf CPAN andere Module als Unicode::String, die die
Konvertierung zwischen Kodierungen handhaben. Es ist Ihre Wahl.
Tabellenzeilen in .sxc-Dateien können ein Attribut
"table:number-rows-repeated" haben, das oft für aufeinanderfolgende leere
Zeilen verwendet wird. Wenn Sie ganze Zeilen und/oder Spalten in OpenOffice
formatieren, setzt es die Anzahl der Zeilen in einem Arbeitsblatt auf 32.000
und die Anzahl der Spalten auf 256, auch wenn nur wenige niedriger nummerierte
Zeilen und Zellen tatsächlich Daten enthalten. Spreadsheet::ReadSXC kürzt
solche Blätter so, dass keine leeren Zeilen nach der letzten Zeile mit Daten
und keine leeren Spalten nach der letzten Spalte mit Daten vorhanden sind (es
sei denn, Sie verwenden die Option 'NoTruncate').
Dennoch ist es vollkommen legal für eine .sxc-Datei, das Attribut
"table:number-rows-repeated" auf Zeilen anzuwenden, die tatsächlich Daten
enthalten (obwohl ich solche Dateien nur manuell erzeugen konnte, nicht durch
OpenOffice selbst). Um in diesen Fällen den Speicherverbrauch zu senken,
kopiert Spreadsheet::ReadSXC Zeilen nicht by value, sondern by reference
(denken Sie daran, dass mehrdimensionale Arrays in Perl eigentlich Arrays von
Referenzen auf Arrays sind). Wenn Sie daher einen Wert in einer Zeile ändern,
ist es möglich, dass Sie den entsprechenden Wert in der nächsten Zeile
ebenfalls geändert finden:
$$workbook_ref{"Sheet1"}[0][0] = 'new string';
print $$workbook_ref{"Sheet1"}[1][0];
Ab Version 0.20 bleiben die von read_sxc() et al. zurückgegebenen Referenzen
nach nachfolgenden Aufrufen derselben Funktion gültig. In früheren Versionen
würde der Aufruf von read_sxc() mit einer anderen Datei als Argument die von
dem ursprünglichen Rückgabewert referenzierten Daten ändern, sodass Sie ihn
vor einem weiteren Aufruf dereferenzieren mussten. Dank an H. Merijn Brand
für die Behebung.
Other Packages Related to perl-Spreadsheet-ReadSXC:
dep: perl(:MODULE_COMPAT_5.26.1)
Package not available
dep: perl(Archive::Zip) (>= 1.34)
Package not available
dep: perl(Moo) (>= 2)
Package not available
dep: perl(PerlIO::gzip)
Package not available
dep: perl(PerlX::Maybe)
Package not available
dep: perl(XML::Twig) (>= 3.50)
Package not available
dep: perl(XML::Twig::XPath)
Package not available
dep: perl(XML::XPath)
Package not available
dep: perl(XML::XPathEngine)
Package not available
Download perl-Spreadsheet-ReadSXC
| Architecture | Package Size | Installed Size | Files |
|---|
| noarch | 52 KiB | 83 KiB | [list of files] |
Paketdateipfade (24)
Paths come from the repository package-file index for the observed builds. They describe archive/package associations, not every file that will exist on a running system after maintainer scripts, alternatives, generated state, diversions, or installation choices.
- /usr/lib/perl5/vendor_perl/5.26.1/Spreadsheet
- /usr/lib/perl5/vendor_perl/5.26.1/Spreadsheet/ParseODS
- /usr/lib/perl5/vendor_perl/5.26.1/Spreadsheet/ParseODS/Cell.pm
- /usr/lib/perl5/vendor_perl/5.26.1/Spreadsheet/ParseODS.pm
- /usr/lib/perl5/vendor_perl/5.26.1/Spreadsheet/ParseODS/Settings.pm
- /usr/lib/perl5/vendor_perl/5.26.1/Spreadsheet/ParseODS/Styles.pm
- /usr/lib/perl5/vendor_perl/5.26.1/Spreadsheet/ParseODS/Workbook.pm
- /usr/lib/perl5/vendor_perl/5.26.1/Spreadsheet/ParseODS/Worksheet.pm
- /usr/lib/perl5/vendor_perl/5.26.1/Spreadsheet/ReadSXC.pm
- /usr/lib/perl5/vendor_perl/5.26.1/Spreadsheet/Todo.pod
- /usr/lib/perl5/vendor_perl/5.26.1/x86_64-linux-thread-multi
- /usr/share/doc/packages/perl-Spreadsheet-ReadSXC
- /usr/share/doc/packages/perl-Spreadsheet-ReadSXC/Changes
- /usr/share/doc/packages/perl-Spreadsheet-ReadSXC/README
- /usr/share/licenses/perl-Spreadsheet-ReadSXC
- /usr/share/licenses/perl-Spreadsheet-ReadSXC/LICENSE
- /usr/share/man/man3/Spreadsheet::ParseODS.3pm.gz
- /usr/share/man/man3/Spreadsheet::ParseODS::Cell.3pm.gz
- /usr/share/man/man3/Spreadsheet::ParseODS::Settings.3pm.gz
- /usr/share/man/man3/Spreadsheet::ParseODS::Styles.3pm.gz
- /usr/share/man/man3/Spreadsheet::ParseODS::Workbook.3pm.gz
- /usr/share/man/man3/Spreadsheet::ParseODS::Worksheet.3pm.gz
- /usr/share/man/man3/Spreadsheet::ReadSXC.3pm.gz
- /usr/share/man/man3/Spreadsheet::Todo.3pm.gz
Field source: openSUSE Leap 15.6 OSS revision leap-15-6-oss-multiarch:ca2653101b9afba6656aea529109ba0c0f1ca1a92aa8614e7c887fda5264c230