Python实现XLSX转CSV:如何保留4列格式不合并
解决XLSX转CSV后Excel显示为1列的问题
看起来你误会了CSV的本质以及Excel打开CSV的方式!你生成的CSV文件其实已经是标准的4列结构了——用文本编辑器(比如Notepad++)打开你现在得到的CSV,就能看到每一行都是用逗号分隔的4个字段,这完全符合CSV的规范。
问题出在Excel打开CSV时的自动识别逻辑:如果你的系统区域设置里的「列表分隔符」不是逗号(比如部分欧洲地区默认用分号),Excel就会把整行内容当成单一列显示。
下面给你几个实用的解决办法:
方法1:通过Excel数据导入功能打开CSV(最推荐)
不要直接双击CSV文件,而是用Excel的导入流程来指定分隔规则:
- 打开空白Excel文件,点击顶部「数据」选项卡 → 选择「自文本/CSV」
- 选中你的CSV文件,在导入向导中:
- 确认文件编码匹配你生成时用的
iso8859_7或utf-8-sig - 分隔符选择「逗号」
- 完成导入后,就能看到正常拆分的4列了
- 确认文件编码匹配你生成时用的
方法2:优化pandas代码的编码与分隔符设置
你的pandas代码可以调整编码为Excel更易识别的格式,同时明确指定分隔符,让生成的CSV能被Excel直接正确解析:
import pandas as pd # 注意统一使用pd别名 def pd_to_csv(file): data_xls = pd.read_excel(file, index_col=None, encoding='iso8859_7') # 使用utf-8-sig编码(Excel原生支持),明确指定逗号分隔符 output_csv = file.replace('.xlsx', '.csv') data_xls.to_csv(output_csv, index=False, encoding='utf-8-sig', sep=',')
用这个代码生成的CSV,双击打开Excel时大概率会自动识别逗号分隔符和正确编码,直接显示4列。
方法3:修改系统区域的列表分隔符(全局设置)
如果你的系统默认列表分隔符不是逗号,可以修改为逗号来适配CSV格式:
- Windows:控制面板 → 区域和语言 → 其他设置 → 列表分隔符,改为「,」
- Mac:系统设置 → 通用 → 语言与地区 → 高级 → 分隔符,将列表分隔符设为「,」
修改后双击CSV就能正常显示4列,但这个设置会影响系统所有依赖列表分隔符的程序,需要谨慎操作。
另外,你用csv模块编写的代码也是完全正确的,生成的CSV结构没有问题,同样可以通过上述方法解决Excel的显示问题。
内容的提问来源于stack exchange,提问作者Drakumel
相关产品推荐
相关产品推荐

