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

11

Estou ciente de usar in2csvpara salvar uma planilha específica como um arquivo .csv:

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

Mas existem outras ferramentas para imprimir apenas os nomes das folhas?

Talvez haja opções com Perl?

csheth
fonte

Respostas:

11

in2csvfornece a opção --namesou -npara isso: [ Origem ]

 -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 na csvkit1.0.2, que ainda não está disponível nas fontes oficiais de pacotes . Você precisa

  • compilar o programa a partir da fonte ou
  • instale-o via pipcom

    sudo pip install csvkit
    

para obter a versão mais recente.

sobremesa
fonte
Eu teria aceitado essa resposta, mas acontece que tenho uma versão da in2csvfalta de -nopção. Estranho, tentando descobrir como obter o mais recente, mas tendo problemas com csvkit e remover mais velhos in2csv... suspiro
csheth
2
Gostaria de removê-lo sudo apt remove python3-csvkite instalar um mais novo, de preferência a partir de packages.ubuntu.com ou de github.com/wireservice/csvkit/tree/1.0.2 . O recurso foi introduzido com este commit marcado como “1.0.2”, portanto, qualquer versão a partir daí deve ter essa opção.
Sobremesa
Infelizmente, parece que nenhuma das versões embalados chegar a este número da versão, então compilar a fonte de github parece ser o único caminho a percorrer - neste caso, eu prefiro não desinstalar a versão do pacote, mas apenas escrever uma função wrapper denominado in2csvque chama /path/to/new/in2csvno caso de ser chamado com a -nopção e o habitual /usr/bin/in2csvmais.
Sobremesa
1
Está bem. Eu usei sudo apt remove python3-csvkit, instalei o mais novo e funcionou. A função wrapper é muito útil, sim!
Csheth 3/11
8

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

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

O XML que xlhtmlgera é assim:

<?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>

Portanto, para os nomes das planilhas, podemos consultar os pagetitlenós, para os quais eu useixmlstarlet .

muru
fonte
+1 Excelente solução, desculpe-me por encontrar a chata. ; P
dessert
Não está disponível para o 16.04 Xenial. Talvez seja útil adicioná-lo à sua resposta?
Csheth 5/11