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

10

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

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

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

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

    
задан csheth 03.11.2017 в 09:39
источник

2 ответа

10

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
    

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

    
ответ дан dessert 03.11.2017 в 09:59
источник
8

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 .     

ответ дан muru 03.11.2017 в 10:07