Как я могу распечатать sheetnames электронной таблицы с помощью командной строки Linux?

Я знаю об использовании in2csv сохранить конкретный рабочий лист как .csv:

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

Но есть ли какие-либо другие инструменты, чтобы просто распечатать sheetnames?

Возможно, существуют опции с Perl?

10
задан 4 November 2017 в 04:18

2 ответа

in2csv предоставляет опцию --names или -n для этого: [ Source ]

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

В вашем примере команда будет be:

in2csv -n file1.xls

Оказывается, эта функция была добавлена ​​только в csvkit 1.0.2, которая пока недоступна из официальных источников пакетов . Вам нужно либо

  • скомпилировать программу из источника , либо
  • установить ее через pip с

    sudo pip install csvkit
    

, чтобы получить последнюю версию.

10
ответ дан 23 November 2019 в 04:24

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.

8
ответ дан 23 November 2019 в 04:24

Другие вопросы по тегам:

Похожие вопросы: