如何防止前导零被剥离时使用c#导入Excel文档

我能够连接并阅读一个Excel文件没有问题。 但是,当导入数据(例如具有前导零的zipcode)时,如何防止excel猜测数据types,并在此过程中删除前导零?

我相信你必须在连接string中设置选项来强制文本导入,而不是自动检测它。

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将混合数据视为文本。

前缀'

用“强制Excel”将单元格的内容前缀为文本而不是数字。 该'将不会显示在Excel中。

有一个registry黑客可以强制Excel读取比前8行更多的时候阅读一列来确定types:

更改

 HKLM\Software\Microsoft\Jet\4.0\Engines\Excel\TypeGuessRows 

为0来读取所有的行,或另一个数字来设置它的行数。

不是这样会有一点点的性能打击。

我认为这样做的方法是格式化源excel文件,使列的格式为文本,而不是一般。 select整个列并右键单击并select格式单元格,从选项列表中select文本。

我认为这样会明确定义列内容是文本,应该这样处理。

让我知道这是否有效。

将文件另存为制表符分隔的文本文件也运行良好。

—老不幸的是,我们不能依靠excel文档的列来保持特定的格式,因为用户将定期粘贴数据。 我不希望应用程序崩溃,如果我们依赖某个列的某种数据types。

前缀与'会工作,是否有一个合理的方式来做到这一点编程方式,一旦数据已经存在于Excel文档?

从Sql服务器以'=" 00022556"'发送值00022556是处理前导零问题的绝佳方法

在你的string前加“\ t”。 这将使string看起来在一个新的标签。