Wie kann ich Blattnamen einer Tabelle mit der Linux-Befehlszeile drucken?

10

Mir ist bekannt in2csv, dass Sie ein bestimmtes Arbeitsblatt als CSV-Datei speichern können:

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

Aber gibt es noch andere Tools, um nur die Blattnamen zu drucken?

Vielleicht gibt es Optionen mit Perl?

csheth
quelle

Antworten:

10

in2csvbietet die Option --namesoder -ndafür: [ Quelle ]

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

In Ihrem Beispiel wäre der Befehl:

in2csv -n file1.xls

Es stellt sich heraus, dass diese Funktion erst in csvkitVersion 1.0.2 hinzugefügt wurde , die noch nicht aus den offiziellen Paketquellen verfügbar ist . Sie müssen entweder

  • Kompilieren Sie das Programm aus dem Quellcode oder
  • Installieren Sie es über pipmit

    sudo pip install csvkit
    

um die neueste Version zu erhalten.

Dessert
quelle
Ich hätte diese Antwort akzeptiert, aber es stellte sich heraus, dass ich eine Version mit in2csvfehlender -nOption habe. Seltsam, versucht herauszufinden, wie man das Neueste bekommt, hat aber Probleme mit csvkit und entfernt ältere in2csv...
seufz
2
Ich würde es einfach mit entfernen sudo apt remove python3-csvkitund ein neueres installieren, vorzugsweise von packages.ubuntu.com oder auch von github.com/wireservice/csvkit/tree/1.0.2 . Die Funktion wurde mit diesem Commit mit dem Tag "1.0.2" eingeführt, daher sollte jede Version ab diesem Zeitpunkt diese Option haben.
Dessert
Leider scheint es , dass keiner der verpackten Versionen diese Versionsnummer erreichen, so von Github die Quelle Kompilieren den einzigen Weg zu sein scheint , zu gehen - in diesem Fall würde ich eher nicht deinstallieren Sie die Paketversion aber nur eine Wrapper - Funktion schreiben genannt , in2csvdass ruft /path/to/new/in2csvan, falls es mit der -nOption und dem üblichen /usr/bin/in2csvsonst aufgerufen wird .
Nachtisch
1
in Ordnung. Ich habe sudo apt remove python3-csvkitdas neuere verwendet , installiert und es hat funktioniert. Die Wrapper-Funktion ist ja sehr nützlich!
csheth
8

in2csvist die einfachere Option, aber ich lasse dies für den Fall, dass jemand es nützlich findet. Es gibt einen netten Befehl xlhtmlzum Konvertieren von XLS-Dateien in HTML oder XML. Sobald Sie über XML verfügen, können verschiedene XML-Verarbeitungstools verwendet werden, um eine Vielzahl von Abfragen durchzuführen. In diesem Fall:

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

Das XML, das xlhtmlgeneriert wird, sieht folgendermaßen aus:

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

Für die Blattnamen können wir also die pagetitleKnoten abfragen , für die ich verwendet habexmlstarlet .

muru
quelle
+1 Ausgezeichnete Lösung, es tut mir sehr leid, dass ich die langweilige gefunden habe. ; P
Dessert
Es ist nicht für 16.04 Xenial verfügbar. Vielleicht nützlich, um es Ihrer Antwort hinzuzufügen?
csheth