Jak wydrukować nazwy arkusza kalkulacyjnego za pomocą wiersza polecenia systemu Linux?

11

Wiem, że mogę in2csvzapisać konkretny arkusz jako plik .csv:

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

Ale czy są jeszcze jakieś narzędzia do drukowania nazw arkuszy?

Być może istnieją opcje Perla?

csheth
źródło

Odpowiedzi:

12

in2csvz csvkitpakietu zapewnia opcję --nameslub -nopcję: [ Źródło ]

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

W twoim przykładzie polecenie to:

in2csv -n file1.xls

Ta funkcja została dodana w wersji csvkit1.0.2, która nie jest dostępna z oficjalnych źródeł pakietów dla wydań starszych niż Bionic. Jeśli korzystasz z Xenial, musisz albo

  • skompiluj program ze źródła lub
  • zainstaluj za pippomocą

    sudo pip install csvkit
    

aby uzyskać najnowszą wersję.

deser
źródło
Przyjąłbym tę odpowiedź, ale okazuje się, że mam wersję, w której in2csvbrakuje -nopcji. Dziwne, próbuję wymyślić, jak uzyskać najnowsze, ale masz problemy z csvkit i usuwam starsze in2csv... westchnienie
csheth
2
Po prostu usunę go sudo apt remove python3-csvkiti zainstaluję nowszą, najlepiej z paczkami.ubuntu.com lub z github.com/wireservice/csvkit/tree/1.0.2 . Funkcja została wprowadzona z tym zatwierdzeniem oznaczonym „1.0.2”, więc każda wersja od tej powinna mieć tę opcję.
deser
Niestety wydaje się, że żadna z wersji pakowanych osiągnąć ten numer wersji, więc zebranie źródło z github wydaje się być jedyną drogę do przebycia - w tym przypadku wolałbym nie odinstalować wersję pakietu, ale po prostu napisać funkcję otoki nazwie in2csvże wywołuje /path/to/new/in2csvna wypadek, gdyby wywołano go z -nopcją i zwykłą /usr/bin/in2csvinną funkcją.
deser
1
ok. Użyłem sudo apt remove python3-csvkit, zainstalowałem nowszy i działało. Funkcja owijania jest bardzo przydatna tak!
csheth
8

in2csvjest prostszą opcją, ale zostawię to na wypadek, gdyby ktoś uznał to za przydatne. Istnieje ładne polecenie potrzebne xlhtmldo konwersji plików XLS na HTML lub XML. A kiedy już masz XML, różne narzędzia do przetwarzania XML mogą być używane do wykonywania wielu różnych zapytań na jego temat. W tym przypadku:

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

xlhtmlGenerowany XML jest taki:

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

Tak więc dla nazw arkuszy możemy zapytać pagetitlewęzły, dla których użyłemxmlstarlet .

muru
źródło
Nie jest dostępny dla Xenial 16.04. Może warto dodać to do swojej odpowiedzi?
csheth,