Packages / openSUSE Leap 16.0 / Unspecified / perl-Spreadsheet-ReadSXC
[Source: perl-Spreadsheet-ReadSXC]
Package: perl-Spreadsheet-ReadSXC (0.380.0-bp160.1.11)
[Project overview: libspreadsheet-readsxc-perl]
Extrair dados de folhas de cálculo OpenOffice 1.x
Spreadsheet::ReadSXC extrai dados de ficheiros de folhas de cálculo
OpenOffice 1.x (.sxc). Exporta a função read_sxc() que recebe um nome de
ficheiro e uma referência opcional a um hash de opções como argumentos e
devolve uma referência a um hash de referências a arrays bidimensionais. As
chaves do hash correspondem aos nomes das folhas de cálculo no livro de
trabalho OpenOffice. Os arrays bidimensionais correspondem a linhas e células
nas respetivas folhas de cálculo. Se não gostar disto porque a ordem das
folhas não é preservada num hash, continue a ler. A opção 'OrderBySheet'
fornece um array de hashes em alternativa.
Se preferir descompactar o ficheiro .sxc você mesmo, pode usar a função
read_xml_file() em vez disso e passar o caminho para content.xml como
argumento. Ou pode extrair a string XML de content.xml e passar a string à
função read_xml_string(). Ambas as funções também aceitam uma referência a um
hash de opções como segundo argumento opcional.
Spreadsheet::ReadSXC usa XML::Twig para analisar o XML contido em ficheiros
.sxc. Apenas os conteúdos dos elementos text:p são devolvidos, não os valores
reais dos atributos table:value. Por exemplo, uma célula pode ter um atributo
table:value-type de "currency", um atributo table:value de "-1500.99" e um
atributo table:currency de "USD". O elemento text:p conteria "-$1,500.99".
Esta é a string devolvida pela função read_sxc(), não o valor de -1500.99.
Spreadsheet::ReadSXC foi escrito com a importação de dados para uma base de
dados SQL em mente. Portanto células vazias da folha de cálculo correspondem
a valores undef nas linhas do array. O código de exemplo acima mostra como
substituir valores undef por strings vazias.
Se o ficheiro .sxc contiver uma folha de cálculo vazia, o seu elemento hash
apontará para um array vazio (a menos que use a opção 'NoTruncate', caso em
que apontará para um array de um array contendo um elemento indefinido).
OpenOffice usa codificação UTF-8. Depende do seu ambiente como os dados
devolvidos pelo analisador XML são melhor tratados:
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;
Claro que há outros módulos além de Unicode::String no CPAN que tratam da
conversão entre codificações. É a sua escolha.
As linhas de tabela em ficheiros .sxc podem ter um atributo
"table:number-rows-repeated", que é frequentemente usado para linhas vazias
consecutivas. Quando formata linhas e/ou colunas inteiras no OpenOffice, este
define o número de linhas numa folha de cálculo para 32.000 e o número de
colunas para 256, mesmo que apenas algumas linhas e células de número mais
baixo contenham realmente dados. Spreadsheet::ReadSXC trunca tais folhas de
modo que não haja linhas vazias após a última linha contendo dados e nenhuma
coluna vazia após a última coluna contendo dados (a menos que use a opção
'NoTruncate').
Ainda assim é perfeitamente legal para um ficheiro .sxc aplicar o atributo
"table:number-rows-repeated" a linhas que realmente contêm dados (embora eu
só tenha conseguido produzir tais ficheiros manualmente, não através do
próprio OpenOffice). Para poupar memória nestes casos, Spreadsheet::ReadSXC
não copia linhas por valor, mas por referência (lembre-se que arrays
multidimensionais em Perl são na verdade arrays de referências a arrays).
Portanto, se alterar um valor numa linha, é possível que encontre o valor
correspondente na linha seguinte também alterado:
$$workbook_ref{"Sheet1"}[0][0] = 'new string';
print $$workbook_ref{"Sheet1"}[1][0];
A partir da versão 0.20 as referências devolvidas por read_sxc() et al.
permanecem válidas após chamadas subsequentes à mesma função. Em versões
anteriores, chamar read_sxc() com um ficheiro diferente como argumento
alterava os dados referenciados pelo valor de retorno original, pelo que tinha
de o desreferenciar antes de fazer outra chamada. Obrigado a H. Merijn Brand
por corrigir isto.
Other Packages Related to perl-Spreadsheet-ReadSXC:
dep: perl(:MODULE_COMPAT_5.42.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 | 50 KiB | 82 KiB | [list of files] |
Caminhos de arquivo do pacote (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.42.0/Spreadsheet
- /usr/lib/perl5/vendor_perl/5.42.0/Spreadsheet/ParseODS
- /usr/lib/perl5/vendor_perl/5.42.0/Spreadsheet/ParseODS/Cell.pm
- /usr/lib/perl5/vendor_perl/5.42.0/Spreadsheet/ParseODS.pm
- /usr/lib/perl5/vendor_perl/5.42.0/Spreadsheet/ParseODS/Settings.pm
- /usr/lib/perl5/vendor_perl/5.42.0/Spreadsheet/ParseODS/Styles.pm
- /usr/lib/perl5/vendor_perl/5.42.0/Spreadsheet/ParseODS/Workbook.pm
- /usr/lib/perl5/vendor_perl/5.42.0/Spreadsheet/ParseODS/Worksheet.pm
- /usr/lib/perl5/vendor_perl/5.42.0/Spreadsheet/ReadSXC.pm
- /usr/lib/perl5/vendor_perl/5.42.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 Leap 16.0 OSS revision leap-16-0-oss-multiarch:271b36d440253edf9871ac0c100319fc7443d8f2d54b6b449a72e9414c51577c