使用SSIS导出数据至Excel时货币类型格式错误问题排查
解决OLE DB导出Money类型到Excel时的文本格式提示问题
1. 预创建Excel模板并设置单元格格式
- 提前手动创建Excel模板文件,将目标列的单元格格式设置为货币类型(可选择对应货币符号,保留两位小数)。
- 在SSIS的Excel目标组件中,选择该预创建模板作为目标文件,而非让SSIS自动生成新文件——自动生成的文件常默认用文本格式处理数值类数据。
2. 修改Excel连接管理器属性
- 打开Excel连接管理器的属性窗口,找到
Extended Properties属性,确保其值包含IMEX=0(默认IMEX=1用于混合数据类型读取,写入时需设为0强制按目标类型写入)。完整属性值示例:Excel 12.0 Xml;HDR=YES;IMEX=0; - 若为旧版
.xls格式,属性值改为:Excel 8.0;HDR=YES;IMEX=0;
3. 检查数据流中的类型转换
- 如果数据流使用了
数据转换组件,确认转换后的列类型仍为DT_CY,未被意外转为字符串类型(如DT_STR或DT_WSTR)。 - 若直接从OLE DB源映射到Excel目标,确保列类型完全匹配,无隐式类型不兼容转换。
4. 禁用“快速加载”选项
- 在Excel目标编辑器的“数据访问模式”中,若选择了“表或视图 - 快速加载”,切换为“表或视图”模式。快速加载可能绕过格式设置,导致数据以文本形式写入。
5. 事后批量修复(应急方案)
- 若上述方法无效,可在导出完成后处理Excel文件:选中目标列,在空白单元格输入
=VALUE(A1)(A1为目标列首个单元格),下拉填充后将结果复制粘贴为数值覆盖原列。此为事后补救,优先用前序方法从根源解决。
内容的提问来源于stack exchange,提问作者Bhaskar Rai
相关产品推荐
相关产品推荐

