Як можна надрукувати назви аркушів електронної таблиці за допомогою командного рядка Linux?


11

Мені відомо, що я можу використовувати in2csvдля збереження певного робочого аркуша як .csv:

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

Але чи існують інші інструменти для того, щоб просто надрукувати назви аркушів?

Можливо, є варіанти з Perl?

Відповіді:


12

in2csvз csvkitпакета надається --namesабо -nваріант для цього: [ Джерело ]

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

У вашому прикладі командою було б:

in2csv -n file1.xls

Ця функція була додана в csvkit1.0.2, який недоступний з офіційних джерел пакета для випусків, старших за Bionic. Якщо ви працюєте з Xenial, вам потрібно зробити будь-який

  • компілювати програму з джерела або
  • встановити через за pipдопомогою

    sudo pip install csvkit
    

щоб отримати останню версію.


Я би прийняв цю відповідь, але виявляється, у мене є версія in2csvвідсутності -nваріанту. Дивно, намагаючись розібратися, як отримати найновіші, але у вас проблеми з csvkit та видаленням старих in2csv... зітхання
csheth

2
Я просто видаліть його sudo apt remove python3-csvkitта встановіть новіший, бажано з пакунків.ubuntu.com , або ще з github.com/wireservice/csvkit/tree/1.0.2 . Ця функція була введена з цим комітом з позначкою "1.0.2", тому будь-яка версія з цієї версії повинна мати цю опцію.
десерт

На жаль, здається, що жодна з пакуваних версій не досягає цього номера версії, тому компіляція джерела з github видається єдиним способом - у цьому випадку я краще не видаляю версію пакета, а просто напишу функцію обгортки, названу in2csvщо дзвінки /path/to/new/in2csvу випадку, якщо він викликається з -nопцією та звичайним /usr/bin/in2csvіншим.
десерт

1
добре. Я використовував sudo apt remove python3-csvkit, встановлював новіший і він працював. Функція обгортки дуже корисна так!
csheth

8

in2csvє більш простим варіантом, але я залишу це на випадок, якщо хтось вважатиме це корисним. Існує приємна команда xlhtmlдля перетворення файлів XLS в HTML або XML. І коли у вас є XML, для виконання найрізноманітніших запитів можна використовувати різні інструменти для обробки XML. В цьому випадку:

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

Створюється XML xlhtmlтакий:

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

Отже, для назв аркушів ми можемо запитувати pagetitleвузли, для яких я використавxmlstarlet .


Він недоступний для 16.04. Xenial. Може бути корисним додати його до своєї відповіді?
csheth
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.