You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Bash Shell脚本将管道分隔CSV转为XLSX?

问题原因

你之前的脚本只是重命名了文件扩展名,并没有真正完成格式转换。XLSX是基于XML的二进制压缩格式,并非纯文本结构,Excel会校验文件实际内容,所以直接改后缀会触发格式无效的提示。

正确转换方案

以下两种Shell脚本方案可实现真正的CSV转XLSX:

方案1:使用LibreOffice命令行工具

LibreOffice提供无界面转换功能,适合大多数Linux发行版:

  1. 先安装LibreOffice Calc组件:
    • Debian/Ubuntu系:sudo apt install libreoffice-calc
    • CentOS/RHEL系:sudo dnf install libreoffice-calc
  2. 转换脚本:
    #!/bin/bash
    for f in *.csv; do
      # 针对管道分隔的CSV,指定分隔符ASCII码(|的ASCII是124)
      libreoffice --headless --convert-to xlsx:"Calc MS Excel 2007 XML" \
        --infilter="csv:124,34,0,1" "$f"
    done
    
    参数说明:
    • --headless:无界面运行,避免弹出窗口
    • --infilter:指定CSV的解析规则,124是管道分隔符的ASCII码,34是双引号,0为文本格式,1表示第一行是表头

方案2:使用Python Pandas库

适合已有Python环境的场景,能精准处理管道分隔的CSV:

  1. 先安装依赖库:
    pip install pandas openpyxl
    
  2. 转换脚本:
    #!/bin/bash
    for f in *.csv; do
      python3 -c "
    import pandas as pd
    # 读取管道分隔的CSV文件
    df = pd.read_csv('$f', sep='|')
    # 导出为XLSX,不保留索引列
    df.to_excel('${f%.csv}.xlsx', index=False, engine='openpyxl')
    "
    done
    

内容的提问来源于stack exchange,提问作者Sherin Shaziya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 14:45:32