在 Linux 中使用命令行将 XLSX 转换为 CSV

linuxopen sourceoperating system更新于 2026/1/11 23:37:17

XLSX 文件是现代 Microsoft Excel 电子表格的标准文件扩展名。我们使用这些文件来分析和组织数据,它们通常包含单元格内由行和列分隔的数字数据。

另一方面,CSV 文件本质上是一个带分隔符的文本文件,使用逗号分隔值,该文件的每一行通常都是一条数据记录。

虽然 xlsx 和 csv 存储数据的格式截然不同,前者使用带有行和列的表格,而后者使用逗号分隔值,但这并不意味着我们不能将它们相互转换。

虽然有几种在线工具可以使用,但使用 Linux 终端将 xlsx 转换为 csv 比将文件上传到某个位置并获取 csv 作为输出要复杂一些。

我们可以使用不同的命令行应用程序来执行相同的操作,我将展示两个最常用的应用程序。帮助我们使用 Linux 命令行将 xlsx 转换为 csv。

第一个是 Gnumeric 电子表格应用程序。Gnumeric 电子表格应用程序附带一个名为 ssconvert 的命令行实用程序,我们将使用它来将 xlsx 转换为 csv。

为了使用 ssconvert,我们首先需要在本地计算机上安装 Gnumeric 电子表格应用程序。

适用于 Ubuntu

apt-get install gnumeric

适用于 Mac

brew install gnumeric

现在我们在本地机器上已经安装了 gnumeric,下一步是使用 ssconvert 实用程序,这样就大功告成了。

在终端中输入以下命令,将 a.xlsx 文件转换为 b.csv

ssconvert Sample_XLSX.xlsx Sample_CSVFile.csv

需要注意的是,这两个文件都存在于我的本地环境中,您可以直接用本地机器上已有的文件替换它们。

输出

$ssconvert Sample_XLSX.xlsx Sample_CSVFile.csv
Using exporter Gnumeric_stf:stf_csv

现在,如果我检查使用上述命令创建的 Sample_CSVFile 的内容,我将得到以下输出 −

immukul@192 Downloads % cat SampleCSVFile_11kb.csv
1,"Eldon Base for stackable storage shelf, platinum",Muhammed MacIntyre,3,-213.25,38.94,35,Nunavut,Storage & Organization,0.8
2,"1.7 Cubic Foot Compact ""Cube"" Office Refrigerators",BarryFrench,293,457.81,208.16,68.02,Nunavut,Appliances,0.58
3,"Cardinal Slant-D? Ring Binder, Heavy Gauge Vinyl",Barry French,293,46.71,8.69,2.99,Nunavut,Binders and Binder Accessories,0.39
4,R380,Clay Rozendal,483,1198.97,195.99,3.99,Nunavut,Telephones and Communication,0.58

您可以清楚地注意到,记录之间以逗号分隔,因此该文件有效。

实现上述目的的另一种方法是使用 libreoffice,在这种情况下,我们只需在终端中输入以下命令即可将 xlsx 文件转换为 csv 文件。

for i in *.xlsx; do libreoffice --headless --convert-to csv "$i" ; done

上述命令会将当前目录中的所有文件转换为与其同名的 csv 文件。

输出

命令执行前

immukul@192 cc % ls -ltr
total 40
-rw-r--r--@ 1 immukul staff 5425 Jul 3 11:48 Sample_XLSX.xlsx

After the command

immukul@192 cc % ls -ltr
total 16
-rw-r--r--@ 1 immukul staff 5425 Jul 3 11:48 Sample_XLSX.csv

相关文章


有用资源