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

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

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

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

Возможно, есть варианты с Perl?

2 ответа

Решение

in2csv обеспечивает --names или же -n Вариант для этого: [ Источник]

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

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

in2csv -n file1.xls

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

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

    sudo pip install csvkit
    

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

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,

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