如何在终端上将 ODS 电子表格文件拆分为每个工作表的 csv 文件?

如何在终端上将 ODS 电子表格文件拆分为每个工作表的 csv 文件?

我想将电子表格(ods 或 xlsx)拆分为多个 csv 文件,每个工作表对应一个文件。

我想在不启动图形应用程序的情况下做到这一点,最好只用一行代码。

有任何想法吗?

虽然链接的重复在其中一个答案中提供了可能的解决方案(不是在已接受的答案中),并且很有帮助。但该解决方案无法按照我的要求处理 ODS 文件,而且我认为这个问题有很大不同。

答案1

嗯,libreoffice可以从脚本转换文档(即在无头模式下,无需打开 GUI)。要将任何电子表格格式转换为 CSV,其最简单的形式如下

libreoffice --convert-to csv PATH/TO/YOUR.ODS

但是,这只会提取文档的第一页并进行转换,而忽略所有其他页。遗憾的是,它也没有选择要转换的页的选项。


所以我们需要一个外部工具,比如转为csv。它是一个开源 Python(2 和 3)脚本,可将 XLSX 文件转换为 CSV,并支持将所有工作表提取到单独的文件中。

Ubuntu 已经安装了 Python,但你可能需要pip先安装它的包管理器。我选择的是 Python 3,但你也可以更改下面的所有命令以使用 2 来运行它:

sudo apt install python3-pip

然后你可以使用xlsx2csv以下命令安装pip3到用户的包目录中

pip3 install --user xlsx2csv

此后,可以在中找到可执行脚本~/.local/bin/xlsx2csv


现在,如果您还没有 XLSX 格式,让我们使用以下命令转换该 ODS 电子表格libreoffice

libreoffice --convert-to xlsx PATH/TO/YOUR.ods

然后我们使用xlsx2csv来提取所有工作表。它将创建一个文件夹OUTPUTFOLDER并将所有提取的内容放在SHEETNAME.csv其中:

~/.local/bin/xlsx2csv -a YOUR.xlsx OUTPUTFOLDER

答案2

使用xls2csv(转换.XLS) 工具catdoc包安装sudo apt install catdoc

xls2csv -b '
' EXCEL.xls | awk '{print >"sheet"NR}' RS='\n\n'

xls2csv -b ' ' EXCEL.xls将读取 MS-Excel 文件并将其内容作为逗号分隔的数据放在标准输出上,并且-b STRING我们告诉工作表用什么字符(或字符串;我们在这里定义了一个实际的换行符)来分隔。


使用xlsx2csv(转换.XLSX); 安装sudo apt install xlsx2csv

xlsx2csv -s 0 EXCEL.xlsx |
    awk '!/,/ { nextSheet++; next } { print >"sheet"nextSheet }'

意思-s 0是打印所有纸张。

答案3

看一眼

ssconvert -O 'separator=:: format=raw quoting-mode=never' -S x.ods  out%n.txt

\感谢{Bruni}

  • -O 'separator= format= ...'用于控制csv格式的详细信息
  • -S为每个工作表创建不同的输出文件

相关内容