使用命令行在 Linux 中将 xlsx 转换为 csv

2024-10-25 08:42:00
admin
原创
248
摘要:问题描述:我正在寻找一种在 Linux 上将 xlsx 文件转换为 csv 文件的方法。我不想使用 PHP/Perl 或类似的东西,因为我正在处理数百万行数据,所以我需要一些快速的东西。我在 Ubuntu 存储库上找到了一个名为 xls2csv 的程序,但它只能转换 xls (Office 2003) 文件(...

问题描述:

我正在寻找一种在 Linux 上将 xlsx 文件转换为 csv 文件的方法。

我不想使用 PHP/Perl 或类似的东西,因为我正在处理数百万行数据,所以我需要一些快速的东西。我在 Ubuntu 存储库上找到了一个名为 xls2csv 的程序,但它只能转换 xls (Office 2003) 文件(我目前正在使用),但我需要对较新的 Excel 文件的支持。

有什么想法吗?


解决方案 1:

Gnumeric电子表格应用程序附带一个名为ssconvert的命令行实用程序,可以在多种电子表格格式之间进行转换:

$ ssconvert Book1.xlsx newfile.csv

Using exporter Gnumeric_stf:stf_csv

$ cat newfile.csv

Foo,Bar,Baz
1,2,3
123.6,7.89,
2012/05/14,,
The,last,Line

要在 Ubuntu 上安装:

apt-get install gnumeric

在 Mac 上安装:

brew install gnumeric

解决方案 2:

如果您已经有桌面环境,那么我相信Gnumeric或LibreOffice会运行良好,但在无头服务器(例如任何基于云的环境)上,它们需要数十个依赖项,您也需要安装这些依赖项。

我找到了这个 Python 替代品:xlsx2csv

easy_install xlsx2csv
xlsx2csv file.xlsx > newfile.csv

安装仅需两秒钟,并且运行顺利。

如果您有多张工作表,则可以一次导出全部工作表,也可以一次导出一张:

xlsx2csv file.xlsx --all > all.csv
xlsx2csv file.xlsx --all -p '' > all-no-delimiter.csv
xlsx2csv file.xlsx -s 1 > sheet1.csv

他还链接到了用 Bash、Python、Ruby 和 Java 构建的几种替代方案。

解决方案 3:

您可以使用 LibreOffice 执行此操作:

libreoffice --headless --convert-to csv $filename --outdir $outdir

由于我不清楚的原因,您可能需要使用 sudo 来运行它。您可以通过将以下行添加到 sudoers 文件来使 LibreOffice 使用 sudo 而不需要密码:

users ALL=(ALL) NOPASSWD: libreoffice

解决方案 4:

使用csvkit:

in2csv data.xlsx > data.csv

有关详细信息,请查看其出色的文档。

解决方案 5:

在 Bash 中,我使用这个LibreOffice命令(可执行libreoffice)来转换当前目录中的所有.xlsx文件:

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

执行之前关闭所有打开的 LibreOffice 实例,否则它将悄无声息地失败。

该命令负责处理文件名中的空格。

几年后我又试了一次,但还是不行。这个问题给出了一些提示,但最快的解决方案是以 root 身份运行(或运行sudo libreoffice)。这并不优雅,但很快。

在 Windows 中使用命令scalc.exe

解决方案 6:

另一种选择是通过小型 Bash 包装器使用R ,以方便使用:

xlsx2txt(){
echo '
require(xlsx)
write.table(read.xlsx2(commandArgs(TRUE)[1], 1), stdout(), quote=F, row.names=FALSE, col.names=T, sep="    ")
' | Rscript --vanilla - $1 2>/dev/null
}

xlsx2txt file.xlsx > file.txt

解决方案 7:

如果.xlsx文件有很多工作表,-s可以使用该标志来获取所需的工作表。例如:

xlsx2csv "my_file.xlsx" -s 2 second_sheet.csv

second_sheet.csv将包含第二张表的数据my_file.xlsx

解决方案 8:

使用Gnumeric电子表格应用程序(其中附带一个名为 ssconvert 的命令行实用程序)确实非常简单:

find . -name '*.xlsx' -exec ssconvert -T Gnumeric_stf:stf_csv {} ;

您已经完成了!

解决方案 9:

您可以使用可执行文件libreoffice将 .xlsx 文件转换为 csv:

libreoffice --headless --convert-to csv ABC.xlsx

参数--headless表示我们不需要GUI

解决方案 10:

如果您可以运行 Java 命令行,那么您可以使用 Apache POI HSSF 的Excel Extractor来执行此操作。它有一个main方法,称为命令行提取器。这个方法似乎只是将所有内容都转储出来。他们指出了这个转换为 CSV 的示例。您必须先编译它,然后才能运行它,但它也有一个main方法,因此您不必进行太多编码即可使其工作。

另一个可行的选择是将 Excel 文件转换为 Excel XML 数据或XML 电子表格,无论 MS 目前如何称呼这种格式,这都可能是一个不错的选择,但需要做一些工作。这将为您打开一个全新的世界,让您可以按照自己想要的方式对其进行拆分。

解决方案 11:

正如其他人所说,可执行文件libreoffice可以将 Excel 文件 ( .xls ) 转换为 CSV。对我来说,问题在于工作表的选择。

这个LibreOffice Python 脚本可以很好地将单个工作表转换为 CSV。

用法是:

./libreconverter.py File.xls:"Sheet Name" output.csv

唯一的缺点(就我而言)是它--headless似乎不起作用。我有一个 LibreOffice 窗口,它显示了一秒钟,然后退出了。

对我来说没问题;这是唯一能够快速完成工作的工具。

解决方案 12:

您可以使用脚本getsheets.py。首先添加依赖项:

pip3 install pandas xlrd openpyxl

然后调用脚本:python3 getsheets.py <file.xlsx>

相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2606  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1558  
  IPD(Integrated Product Development)流程作为一种先进的产品开发管理模式,在众多企业中得到了广泛应用。其中,技术评审与决策评审是IPD流程中至关重要的环节,它们既有明显的区别,又存在紧密的协同关系。深入理解这两者的区别与协同,对于企业有效实施IPD流程,提升产品开发效率与质量具有重要意义...
IPD管理流程   40  
  本文介绍了以下10款项目管理软件工具:禅道项目管理软件、ClickUp、Freshdesk、GanttPRO、Planview、Smartsheet、Asana、Nifty、HubPlanner、Teamwork。在当今快速变化的商业环境中,项目管理软件已成为企业提升效率、优化资源分配和确保项目按时交付的关键工具。然而...
项目管理系统   38  
  建设工程项目质量关乎社会公众的生命财产安全,也影响着企业的声誉和可持续发展。高质量的建设工程不仅能为使用者提供舒适、安全的环境,还能提升城市形象,推动经济的健康发展。在实际的项目操作中,诸多因素会对工程质量产生影响,从规划设计到施工建设,再到后期的验收维护,每一个环节都至关重要。因此,探寻并运用有效的方法来提升建设工程...
工程项目管理制度   33  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用