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

如何将Excel工作表批量转为保留全小数的独立CSV文件(Linux兼容)

Linux下Excel工作表转高精度CSV的自动化实现方案

一、Python代码实现(可控性强,适合定制需求)

依赖准备

Linux环境下安装跨平台的Excel处理库:

pip install openpyxl

(若需处理.xls格式,需安装旧版xlrd:pip install xlrd==1.2.0)

核心代码

该脚本会遍历Excel工作簿的所有工作表,将每个工作表导出为独立CSV,严格保留数值的所有有效小数位,避免舍入:

import openpyxl
import csv
from pathlib import Path

def excel_to_precise_csv(excel_file_path):
    # 加载工作簿,仅读取单元格实际值(忽略公式)
    wb = openpyxl.load_workbook(excel_file_path, data_only=True)
    file_path = Path(excel_file_path)
    # 创建输出目录
    output_dir = file_path.parent / f"{file_path.stem}_split_csvs"
    output_dir.mkdir(exist_ok=True)

    # 遍历每个工作表
    for sheet_name in wb.sheetnames:
        ws = wb[sheet_name]
        csv_output_path = output_dir / f"{sheet_name}.csv"
        
        with open(csv_output_path, 'w', newline='', encoding='utf-8') as csv_file:
            writer = csv.writer(csv_file)
            for row in ws.iter_rows(values_only=True):
                processed_row = []
                for cell_val in row:
                    # 处理数值型单元格,保留所有有效小数位
                    if isinstance(cell_val, float):
                        # 先保留15位小数(覆盖Excel双精度存储的最大有效位数),再去除末尾冗余的0和小数点
                        str_val = f"{cell_val:.15f}".rstrip('0').rstrip('.') if '.' in f"{cell_val:.15f}" else f"{cell_val}"
                        processed_row.append(str_val)
                    else:
                        # 非数值直接保留原始内容
                        processed_row.append(cell_val)
                writer.writerow(processed_row)

# 替换为你的Excel文件路径
excel_to_precise_csv("your_high_precision_workbook.xlsx")

关键说明

  • data_only=True:确保读取的是单元格计算后的实际值,而非公式
  • 数值处理逻辑:避免科学计数法和不必要的舍入,完全保留Excel中存储的有效精度

二、LibreOffice命令行方案(无需编程,快速自动化)

利用Linux下的LibreOffice无界面模式,直接批量转换,适合不需要定制的场景。

安装依赖

Debian/Ubuntu系:

sudo apt update && sudo apt install libreoffice-calc

RHEL/CentOS系:

sudo dnf install libreoffice-calc

转换命令

libreoffice --headless --convert-to csv:"Text - txt - csv (StarCalc)" --outdir ./output_csvs your_workbook.xlsx

效果说明

  • 自动将每个工作表导出为独立CSV文件,命名格式为[原文件名]_[工作表名].csv
  • 采用StarCalc的CSV导出规则,默认保留数值的全部精度,不会随意舍入浮点值

方案对比

  • Python方案:适合需要额外定制(比如过滤行/列、重命名文件)的场景,精度控制完全自主
  • LibreOffice方案:零代码,快速实现批量转换,适合简单的拆分需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 21:07:09