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

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

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

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

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

也许 Perl 还有其他选择?

答案1

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
    

获取最新版本。

答案2

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

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

生成的XMLxlhtml如下:

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

相关内容