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

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

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

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

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

10
задан 4 November 2017 в 15:18

6 ответов

in2csv предоставляет параметр --names или -n для этого: [Source]

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

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

in2csv -n file1.xls

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

скомпилировать программу из источника, либо установить ее через pip с помощью
sudo pip install csvkit

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

10
ответ дан 22 May 2018 в 16:50
  • 1
    Я бы принял этот ответ, но, оказывается, у меня есть версия in2csv, у которой отсутствует опция -n. Странно, пытаясь понять, как получить последние, но у вас проблемы с csvkit и удаление старых in2csv ... вздохов – csheth 3 November 2017 в 15:32
  • 2
    Я бы просто удалил его с помощью sudo apt remove python3-csvkit и установил более новый, предпочтительно из packages.ubuntu.com , или из github.com/wireservice/csvkit/tree/1.0.2 . Эта функция была введена с этой фиксацией с меткой «1.0.2», поэтому любая версия с этого должна иметь этот параметр. – dessert 3 November 2017 в 15:40
  • 3
    К сожалению, кажется, что ни одна из упакованных версий не достигает этого номера версии, поэтому компиляция источника из github, по-видимому, является единственным способом - в этом случае я предпочел бы не удалить версию пакета, но просто напишите оберточную функцию с именем in2csv, которая вызывает /path/to/new/in2csv, если она вызывается с опцией -n и обычным /usr/bin/in2csv else. – dessert 3 November 2017 в 15:51
  • 4
    ОК. Я использовал sudo apt remove python3-csvkit, установил новый, и он сработал. Функция обертки очень полезна да! – csheth 3 November 2017 в 15:56

in2csv предоставляет параметр --names или -n для этого: [Source]

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

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

in2csv -n file1.xls

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

скомпилировать программу из источника, либо установить ее через pip с помощью sudo pip install csvkit

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

10
ответ дан 18 July 2018 в 03:59

in2csv предоставляет параметр --names или -n для этого: [Source]

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

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

in2csv -n file1.xls

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

скомпилировать программу из источника, либо установить ее через pip с помощью sudo pip install csvkit

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

10
ответ дан 24 July 2018 в 17:58

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 , для которого xlhtml .

8
ответ дан 22 May 2018 в 16:50
  • 1
    +1 Отличное решение, мне очень жаль найти скучный. ;П – dessert 3 November 2017 в 14:09
  • 2
    Он недоступен для 16.04 Xenial. Может быть, полезно добавить его в свой ответ? – csheth 5 November 2017 в 10:38

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 , для которого xlhtml .

8
ответ дан 18 July 2018 в 03:59

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 , для которого xlhtml .

8
ответ дан 24 July 2018 в 17:58
  • 1
    +1 Отличное решение, мне очень жаль найти скучный. ;П – dessert 3 November 2017 в 14:09
  • 2
    Он недоступен для 16.04 Xenial. Может быть, полезно добавить его в свой ответ? – csheth 5 November 2017 в 10:38

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

Похожие вопросы: