Ответы:
in2csv
из csvkit
пакета предоставляет опцию --names
или -n
для этого: [ Source ]
-n, --names Display sheet names from the input Excel file.
В вашем примере команда будет:
in2csv -n file1.xls
Эта функция была добавлена в csvkit
1.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
...