Business Objects导出Excel多空行,Excel存CSV自动转格式致ETL失败求助
解决Excel保存CSV时自动格式转换的方案
方案1:预先设置单元格为文本格式
- 删除空行后,选中需要保留前导零的列(如ZIP代码列),右键选择「设置单元格格式」
- 在格式窗口中切换到「文本」选项卡,点击确定
- 对已有的内容,双击单元格并回车确认格式生效,之后直接保存为CSV,前导零会被原样保留,且不会添加单引号
方案2:用VBA脚本导出无格式转换的CSV(同时自动跳过空行)
这个方法能彻底避免Excel的自动格式转换,还能省去手动删空行的步骤:
- 打开待处理的Excel文件,按
Alt + F11打开VBA编辑器 - 右键点击左侧的工作簿名称,选择「插入」>「模块」
- 粘贴以下代码:
Sub ExportCleanCSV() Dim ws As Worksheet Dim savePath As String Dim rng As Range Dim rowText As String Dim cell As Range Set ws = ActiveSheet savePath = Application.GetSaveAsFilename(FileFilter:="CSV Files (*.csv), *.csv") If savePath = "False" Then Exit Sub Open savePath For Output As #1 Set rng = ws.UsedRange For Each row In rng.Rows ' 跳过空行 If WorksheetFunction.CountA(row) > 0 Then rowText = "" For Each cell In row.Cells ' 直接读取单元格文本,不做格式转换 rowText = rowText & IIf(rowText = "", "", ",") & cell.Text Next cell Print #1, rowText End If Next row Close #1 MsgBox "导出完成", vbOKOnly End Sub
- 按
F5运行脚本,选择保存路径即可导出符合要求的CSV
方案3:用Power Query处理原文件
如果不想用VBA,可以借助Power Query完成格式保留和空行删除:
- 打开Excel,点击「数据」选项卡 →「获取数据」→「从文件」→「从工作簿」,选择Business Objects导出的Excel文件
- 在Power Query编辑器中,选中ZIP代码列,点击「转换」选项卡 →「数据类型」→「文本」
- 点击「主页」选项卡 →「删除行」→「删除空行」
- 点击「关闭并上载」,将处理后的数据导入新工作表,再保存为CSV即可
内容的提问来源于stack exchange,提问作者MoonDragn
相关产品推荐
相关产品推荐

