我能够连接并读取excel文件没问题。但是在导入具有前导零的zipcodes等数据时,如何防止excel猜测数据类型并在此过程中剥离前导零?
答案 0 :(得分:6)
我相信您必须在连接字符串中设置选项以强制进行文本导入,而不是自动检测它。
Provider=Microsoft.ACE.OLEDB.12.0;
Data Source=c:\path\to\myfile.xlsx;
Extended Properties=\"Excel 12.0 Xml;IMEX=1\";
您的milage可能会因您安装的版本而异。 IMEX = 1扩展属性告诉Excel将混合数据视为文本。
答案 1 :(得分:1)
前缀为'
答案 2 :(得分:1)
使用'强制Excel将内容设置为文本而不是数字来预先添加单元格的内容。 '将不会显示在Excel中。
答案 3 :(得分:1)
有一个注册表黑客可以强制Excel在读取列时读取超过前8行的内容以确定类型:
更改
HKLM\Software\Microsoft\Jet\4.0\Engines\Excel\TypeGuessRows
要为0以读取所有行,或将其他数字设置为该行数。
并不是说这会有轻微的性能影响。
答案 4 :(得分:0)
我认为这样做的方法是格式化源excel文件,使列格式化为Text而不是General。选择整个列并右键单击并选择格式单元格,从选项列表中选择文本。
我认为这将明确定义列内容是文本,应该这样对待。
如果有效,请告诉我。
答案 5 :(得分:0)
将文件另存为制表符分隔文本文件也运行良好。
---老 不幸的是,我们不能依赖excel doc的列来保持特定的格式,因为用户会定期将数据粘贴到其中。如果我们依赖列的某种数据类型,我不希望应用程序崩溃。
前缀'会工作,一旦数据已存在于Excel文档中,是否有合理的方式以编程方式执行此操作?
答案 6 :(得分:0)
从Sql server发送值00022556
为'=" 00022556"'
是处理前导零问题的绝佳方法
答案 7 :(得分:0)
添加" \ t"在你的字符串之前它会使字符串显示在新选项卡中。