Ответы:
in2csvиз csvkitпакета предоставляет опцию --namesили -nдля этого: [ Source ]
-n, --names Display sheet names from the input Excel file.
В вашем примере команда будет:
in2csv -n file1.xls
Эта функция была добавлена в csvkit1.0.2, которая недоступна в официальных источниках пакетов для выпусков старше Bionic. Если вы используете Xenial, вам нужно либо
установить его через pipс
sudo pip install csvkit
чтобы получить последнюю версию.
sudo apt remove python3-csvkitи установил более новый, желательно с packages.ubuntu.com или с github.com/wireservice/csvkit/tree/1.0.2 . Функция была введена с этим коммитом, помеченным «1.0.2», поэтому любая версия с этого момента должна иметь эту опцию.
in2csvчто звонки /path/to/new/in2csvв случае, если это вызвано с -nопцией и обычным /usr/bin/in2csvдругим.
sudo apt remove python3-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 .
in2csvхватает-nварианта. Странно, пытаться выяснить, как получить последнюю версию, но возникли проблемы с csvkit и удалить старыеin2csv...