Excel导出CSV时避免自动添加额外引号的一步式自动解决方案
解决Excel导出CSV时引号重复的一步式方法
嘿,我懂你的困扰——Excel默认的CSV导出规则总会把带引号的单元格内容转成"""def""",而你想要的是干净的abc, "def",还不想事后手动替换或者写宏。没问题,这里有个无需额外操作的一步式自动解决办法,全程在Excel里就能搞定:
方法:用Power Query生成并导出符合要求的CSV
这个方法适用于Excel 2016及以后版本(旧版本需先安装Power Query插件,现在主流Excel版本都自带了):
- 选中你包含
abc和"def"的单元格区域(比如A1:B1)。 - 点击顶部菜单栏的数据选项卡,选择从表格/区域(如果弹出标题确认提示,根据你的数据情况选择,这里无标题选“否”即可)。
- 进入Power Query编辑器后,点击添加列选项卡,选择自定义列。
- 在弹出的自定义列对话框里,输入以下公式(假设你的两列自动命名为
Column1和Column2,对应abc和"def"):
这个公式的作用是:把第一列内容和处理后的第二列内容(去掉原有引号,再手动添加一对引号)用逗号加空格拼接,直接得到= Text.Combine({[Column1], "\"" & Text.Replace([Column2], """", "") & "\""}, ", ")abc, "def"。 - 点击确定后,你会看到新生成的自定义列里已经是你想要的完整行内容。右键删除原来的
Column1和Column2列。 - 点击主页选项卡的关闭并上载,把处理好的数据导回Excel工作表。
- 选中这个新的单列数据,点击文件→另存为,选择保存类型为文本文件(*.txt),保存后把文件后缀改成
.csv——打开这个CSV文件,内容就是你预期的abc, "def"!
这个方法全程不需要手动替换内容,也不需要写宏,是可视化的一步式操作,以后再遇到类似情况,重复流程就行。
补充说明:其实Excel默认的CSV导出行为是符合标准CSV规范的(标准要求字段内的引号用双引号转义),但如果你确实需要非标准格式,上面的方法完美适配你的需求。
内容的提问来源于stack exchange,提问作者andrey




