如何使用Linux命令行打印电子表格的工作表名称?


11

我知道使用in2csv过将特定的工作表另存为.csv:

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

但是还有其他工具可以仅打印工作表名称吗?

也许Perl有选择?

Answers:


12

in2csvcsvkit软件包中提供的--names-n选项:[ ]

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

在您的示例中,命令为:

in2csv -n file1.xls

此功能是在csvkit1.0.2 中添加的,对于比Bionic更早的发行版,不能从官方软件包中获得此功能。如果您正在运行Xenial,则需要

  • 源代码编译程序或
  • 通过安装它pip

    sudo pip install csvkit
    

获取最新版本。


我会接受这个答案,但事实证明我有一个in2csv缺少-n选项的版本。很奇怪,试图弄清楚如何获取最新版本,但在使用csvkit时遇到了麻烦,并删除了较旧的版本in2csv...感叹
csheth

2
我只是将其删除,sudo apt remove python3-csvkit并安装一个更新的版本,最好是从packages.ubuntu.com或从github.com/wireservice/csvkit/tree/1.0.2中安装。该功能是在推出提交标记为“1.0.2”,所以从任何版本上应该有这个选项。
甜点

不幸的是,似乎没有任何包装的版本达到这个版本号,所以编译从GitHub源似乎是唯一的出路-在这种情况下,我宁愿卸载的软件包版本,但只写了一个名为包装函数in2csv/path/to/new/in2csv如果使用-n选项和通常的/usr/bin/in2csv其他方法调用,则调用。
甜点

1
好。我使用sudo apt remove python3-csvkit,安装了较新的版本,并且可以正常工作。包装函数非常有用,是的!
csheth

8

in2csv是更简单的选项,但是如果有人觉得它有用,我将保留它。有一个很好的命令,xlhtml用于将XLS文件转换为HTML或XML。一旦有了XML,便可以使用各种XML处理工具对其进行各种查询。在这种情况下:

$ xlhtml -xml ~/foo.xls | xmlstarlet sel -t -m '//pagetitle' -v . -n
Sheet1
Sheet2

xlhtml生成的XML 如下所示:

<?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


16.04 Xenial不可用。将其添加到您的答案也许有用?
csheth
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.