Как я могу распечатать имена таблиц с помощью командной строки 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
,