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

Python Excel转CSV转换:多行单元格数据输出异常问题求助

解决Excel多行单元格转CSV的格式错误问题

嘿,这个问题我太熟了!当Excel单元格里藏着换行符的时候,直接转CSV肯定会乱——毕竟CSV默认用换行来分隔不同行数据,单元格内部的换行就会被误判成新行,导致输出格式完全错误。下面给你两种靠谱的解决办法:

方法一:用Pandas一键搞定(最省心)

Pandas内置了符合CSV规范的处理逻辑,会自动把包含换行、逗号这类特殊字符的单元格用双引号包裹,完美避免格式混乱。

代码示例

import pandas as pd
import csv

# 读取Excel文件,替换成你的文件路径和工作表名
df = pd.read_excel('your_file.xlsx', sheet_name='Sheet1')

# 保存为CSV,关键是设置quoting参数确保特殊单元格被引号包裹
df.to_csv('output.csv', 
          index=False,  # 不要把Pandas的索引写到CSV里
          quoting=csv.QUOTE_NONNUMERIC,  # 给非数字单元格加引号
          encoding='utf-8')

如果想给所有单元格都加上引号,可以把quoting改成csv.QUOTE_ALL。

方法二:手动处理(用OpenPyXL,适合不想依赖Pandas的场景)

如果不想用Pandas,也可以用OpenPyXL读取Excel,再配合Python内置的csv模块来处理,核心还是靠csv.writer的引号包裹逻辑。

代码示例

from openpyxl import load_workbook
import csv

# 加载Excel文件
wb = load_workbook('your_file.xlsx')
ws = wb.active  # 取当前活动工作表,也可以指定工作表名:wb['Sheet1']

# 写入CSV文件,注意newline=''避免空行
with open('output.csv', 'w', newline='', encoding='utf-8') as csv_file:
    writer = csv.writer(csv_file, quoting=csv.QUOTE_NONNUMERIC)
    
    # 遍历Excel的每一行,直接写入CSV
    for row in ws.iter_rows(values_only=True):
        writer.writerow(row)

为什么之前会出错?

CSV的规范里明确要求:如果单元格内容包含换行符、逗号、双引号,必须用双引号把整个单元格包裹起来。之前的转换逻辑没做这个处理,导致单元格里的换行被当成了行分隔符,直接把一条数据拆成了好几行,自然就出错了。

比如你提供的示例数据里,包含多行的单元格转成CSV后应该是这样的:

"Domain","State","Industry","Simulation","Simulation offers public quick access to information and analysis – e.g., reports, news, data, and trends."
"Domain","State","Industry","VT","VR enables people to view simulation of virtual environement\nDynamic vis..."

这样CSV解析工具就能正确识别出换行是单元格内容的一部分,而不是新的行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:32:17