Packages / openSUSE Tumbleweed / Unspecified / perl-Spreadsheet-ReadSXC
[Source: perl-Spreadsheet-ReadSXC]
Package: perl-Spreadsheet-ReadSXC (0.390.0-1.6)
[Project overview: libspreadsheet-readsxc-perl]
Estrarre dati da fogli di calcolo OpenOffice 1.x
Spreadsheet::ReadSXC estrae dati dai file di fogli di calcolo OpenOffice 1.x
(.sxc). Esporta la funzione read_sxc() che prende un nome di file e un
riferimento opzionale a un hash di opzioni come argomenti e restituisce un
riferimento a un hash di riferimenti ad array bidimensionali. Le chiavi
dell'hash corrispondono ai nomi dei fogli di lavoro nella cartella di lavoro
OpenOffice. Gli array bidimensionali corrispondono a righe e celle nei
rispettivi fogli di calcolo. Se non ti piace perché l'ordine dei fogli non
viene preservato in un hash, continua a leggere. L'opzione 'OrderBySheet'
fornisce invece un array di hash.
Se preferisci scompattare il file .sxc tu stesso, puoi usare invece la
funzione read_xml_file() e passare il percorso a content.xml come argomento.
Oppure puoi estrarre la stringa XML da content.xml e passare la stringa alla
funzione read_xml_string(). Entrambe le funzioni accettano anche un
riferimento a un hash di opzioni come secondo argomento opzionale.
Spreadsheet::ReadSXC usa XML::Twig per analizzare l'XML contenuto nei file
.sxc. Vengono restituiti solo i contenuti degli elementi text:p, non i valori
effettivi degli attributi table:value. Ad esempio, una cella potrebbe avere
un attributo table:value-type di "currency", un attributo table:value di
"-1500.99" e un attributo table:currency di "USD". L'elemento text:p
conterrebbe "-$1,500.99". Questa è la stringa restituita dalla funzione
read_sxc(), non il valore di -1500.99.
Spreadsheet::ReadSXC è stato scritto pensando all'importazione di dati in un
database SQL. Pertanto le celle vuote del foglio di calcolo corrispondono a
valori undef nelle righe dell'array. Il codice di esempio sopra mostra come
sostituire i valori undef con stringhe vuote.
Se il file .sxc contiene un foglio di calcolo vuoto, il suo elemento hash
punterà a un array vuoto (a meno che non usi l'opzione 'NoTruncate', nel qual
caso punterà a un array di un array contenente un elemento indefinito).
OpenOffice usa la codifica UTF-8. Dipende dal tuo ambiente come gestire al
meglio i dati restituiti dal parser XML:
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;
Naturalmente ci sono altri moduli oltre a Unicode::String su CPAN che gestiscono
la conversione tra codifiche. È una tua scelta.
Le righe di tabella nei file .sxc possono avere un attributo
"table:number-rows-repeated", spesso usato per righe vuote consecutive.
Quando formatti intere righe e/o colonne in OpenOffice, imposta il numero di
righe in un foglio di lavoro a 32.000 e il numero di colonne a 256, anche se
solo poche righe e celle con numero più basso contengono effettivamente dati.
Spreadsheet::ReadSXC tronca tali fogli in modo che non ci siano righe vuote
dopo l'ultima riga contenente dati e nessuna colonna vuota dopo l'ultima
colonna contenente dati (a meno che non usi l'opzione 'NoTruncate').
Tuttavia è perfettamente legale per un file .sxc applicare l'attributo
"table:number-rows-repeated" a righe che contengono effettivamente dati
(anche se sono riuscito a produrre tali file solo manualmente, non tramite
OpenOffice stesso). Per risparmiare memoria in questi casi,
Spreadsheet::ReadSXC non copia le righe per valore, ma per riferimento
(ricorda che gli array multidimensionali in Perl sono in realtà array di
riferimenti ad array). Pertanto, se cambi un valore in una riga, è possibile
che trovi il valore corrispondente nella riga successiva anch'esso cambiato:
$$workbook_ref{"Sheet1"}[0][0] = 'new string';
print $$workbook_ref{"Sheet1"}[1][0];
A partire dalla versione 0.20 i riferimenti restituiti da read_sxc() et al.
rimangono validi dopo chiamate successive alla stessa funzione. Nelle versioni
precedenti, chiamare read_sxc() con un file diverso come argomento
cambiava i dati referenziati dal valore di ritorno originale, quindi dovevi
dereferenziare prima di fare un'altra chiamata. Grazie a H. Merijn Brand per
aver corretto questo.
Other Packages Related to perl-Spreadsheet-ReadSXC:
dep: perl(:MODULE_COMPAT_5.44.0)
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 | 47 KiB | 82 KiB | [list of files] |
Percorsi file del pacchetto (23)
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.44.0/Spreadsheet
- /usr/lib/perl5/vendor_perl/5.44.0/Spreadsheet/ParseODS
- /usr/lib/perl5/vendor_perl/5.44.0/Spreadsheet/ParseODS/Cell.pm
- /usr/lib/perl5/vendor_perl/5.44.0/Spreadsheet/ParseODS.pm
- /usr/lib/perl5/vendor_perl/5.44.0/Spreadsheet/ParseODS/Settings.pm
- /usr/lib/perl5/vendor_perl/5.44.0/Spreadsheet/ParseODS/Styles.pm
- /usr/lib/perl5/vendor_perl/5.44.0/Spreadsheet/ParseODS/Workbook.pm
- /usr/lib/perl5/vendor_perl/5.44.0/Spreadsheet/ParseODS/Worksheet.pm
- /usr/lib/perl5/vendor_perl/5.44.0/Spreadsheet/ReadSXC.pm
- /usr/lib/perl5/vendor_perl/5.44.0/Spreadsheet/Todo.pod
- /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 Tumbleweed OSS revision tumbleweed-oss-multiarch:4db10cdde3ad82c7e22be35753c9e164b4bdd30f92db4aee17a0d4c94c5f902f