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


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

命令之后

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

更新于: 2021-07-29

1K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.