Linux下将Excel转CSV推荐用ssconvert或in2csv:ssconvert属gnumeric工具,兼容xls/xlsx,支持指定工作表和编码;in2csv属csvkit,适合Python环境,可列sheet名、选表转换;二者均轻量可靠,避免LibreOffice headless或重命名等错误方式。

Linux 下把 Excel 转成 CSV,核心是用命令行工具处理 .xlsx 或 .xls 文件。原生 Linux 不支持直接双击打开 Excel,但有成熟、轻量、可脚本化的方案,无需图形界面或 Office 套件。
确认 Excel 文件格式和内容
先用 file 命令查看文件真实类型:
file data.xlsx
输出类似 "data.xlsx: Zip archive data..." 表示是 .xlsx(Office 2007+);若显示 "Composite Document File V2 Document" 则是旧版 .xls。
注意:CSV 是纯文本,不保留公式、合并单元格、颜色、多张 sheet。转换前建议手动确认源文件只有一张有效工作表,且无复杂格式干扰数据结构。
用 ssconvert(推荐,最稳)
ssconvert 是 gnumeric 工具包里的命令行转换器,对 Excel 兼容性好,支持 .xls/.xlsx,能自动识别编码和分隔符。
安装(Ubuntu/Debian):
sudo apt install gnumeric
CentOS/RHEL:
sudo yum install gnumeric 或 sudo dnf install gnumeric
转换命令(默认 UTF-8,逗号分隔):
ssconvert input.xlsx output.csv
常用选项:
- 指定工作表(如第2个sheet):--sheet 1(索引从 0 开始)
- 强制 UTF-8 输出:--export-type Gnumeric_Excel:csv_utf8
- 用制表符分隔:--export-type Gnumeric_Excel:csv_tab
用 in2csv(适合 Python 用户)
来自 csvkit 工具集,依赖 Python,对 .xlsx 支持良好,输出规范,适合后续管道处理。
安装:
pip3 install csvkit
基本转换:
in2csv input.xlsx > output.csv
小技巧:
- 列出所有 sheet 名:in2csv -n input.xlsx
- 转指定 sheet:in2csv --sheet "Sheet2" input.xlsx > output.csv
- 跳过空行或错误行加 --no-inference 更稳定
避坑提醒
别用 LibreOffice headless 模式(soffice --headless)——虽可行但启动慢、依赖大、容易卡住,不适合批量或自动化场景。
别用简单重命名(.xlsx → .csv)——那是无效操作,CSV 不是 Excel 的“换后缀”格式。
中文乱码?大概率是源 Excel 用了 GBK 编码但工具按 UTF-8 解析。可用 ssconvert 的 csv_utf8 导出类型,或用 iconv 二次转码:
in2csv input.xlsx | iconv -f gbk -t utf-8 > output.csv
基本上就这些。ssconvert 适合大多数情况,in2csv 适合已装 Python 的环境。两者都命令简洁、结果可靠,一条命令搞定,不用开 GUI,也方便写进脚本批量处理。










