Como posso imprimir nomes de planilhas de uma planilha usando a linha de comando do Linux?

10

Estou ciente de usar in2csv para salvar uma planilha específica como .csv:

in2csv --sheet "sheet name" file1.xls > sheet-name.csv

Mas existem outras ferramentas para imprimir os nomes das planilhas?

Talvez haja opções com o Perl?

    
por csheth 03.11.2017 / 10:39

2 respostas

10

in2csv fornece a opção --names ou -n para isso: [ Fonte ]

 -n, --names     Display sheet names from the input Excel file.

No seu exemplo, o comando seria:

in2csv -n file1.xls

Acontece que esse recurso foi adicionado apenas em csvkit 1.0.2, que não está disponível nas fontes de pacotes oficiais ainda. Você precisa

  • compile o programa na fonte ou
  • instale-o via pip com

    sudo pip install csvkit
    

para obter a versão mais recente.

    
por dessert 03.11.2017 / 10:59
8

in2csv é a opção mais simples, mas deixarei isso no caso de alguém achar útil. Existe um bom comando chamado xlhtml para converter arquivos XLS para HTML ou XML . E uma vez que você tenha o XML, várias ferramentas de processamento XML podem ser usadas para fazer uma grande variedade de consultas nele. Neste caso:

$ xlhtml -xml ~/foo.xls | xmlstarlet sel -t -m '//pagetitle' -v . -n
Sheet1
Sheet2

O XML que xlhtml gera é o seguinte:

<?xml version="1.0" encoding="iso-8859-1" ?>
<excel_workbook>
    <sheets>
        <sheet>
            <page>0</page>
            <pagetitle>Sheet1</pagetitle>
            <firstrow>0</firstrow>
            <lastrow>11</lastrow>
            <firstcol>0</firstcol>
            <lastcol>0</lastcol>

Assim, para os nomes das planilhas, podemos consultar os pagetitle nós, para os quais usei xmlstarlet .

    
por muru 03.11.2017 / 11:07