使用c#导入excel doc时,如何防止前导零被剥离?

时间:2008-08-22 17:02:14

标签: c# asp.net excel ado.net

我能够连接并读取excel文件没问题。但是在导入具有前导零的zipcodes等数据时,如何防止excel猜测数据类型并在此过程中剥离前导零?

8 个答案:

答案 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"在你的字符串之前它会使字符串显示在新选项卡中。