使用C#导入Excel文档时,如何防止前导零被剥离
时间:2020-03-05 18:42:07 来源:igfitidea点击:
我可以连接并读取Excel文件,没有问题。但是,当导入诸如带前导零的邮政编码的数据时,如何防止excel猜测数据类型并在处理过程中去除前导零呢?
解决方案
回答
前缀为"
回答
用'作为单元格内容的前缀会强制Excel将其视为文本而不是数字。 '不会在Excel中显示。
回答
我认为,执行此操作的方法是格式化源excel文件,以使该列的格式设置为"文本"而不是"常规"。选择整个列,然后右键单击并选择格式单元格,然后从选项列表中选择文本。
我认为这将明确定义列内容为文本,因此应将其视为文本。
让我知道是否可行。
回答
我相信我们必须在连接字符串中设置该选项以强制文本导入,而不是自动检测它。
Provider=Microsoft.ACE.OLEDB.12.0; Data Source=c:\path\to\myfile.xlsx; Extended Properties=\"Excel 12.0 Xml;IMEX=1\";
里程可能会有所不同,具体取决于我们安装的版本。 IMEX = 1扩展属性告诉Excel将混合数据视为文本。
回答
将文件另存为制表符分隔的文本文件也效果很好。
- -老的
不幸的是,我们不能依靠excel文档的列来保持特定的格式,因为用户会定期将数据粘贴到其中。如果我们依赖某列的某种数据类型,我不希望该应用程序崩溃。
前缀为'会起作用,一旦excel文档中已经存在数据,是否有合理的方法以编程方式执行该操作?
回答
有一个注册表黑客可以在读取列以确定类型时强制Excel读取前8行以上的内容:
改变
HKLM\Software\Microsoft\Jet.0\Engines\Excel\TypeGuessRows
为0表示将读取所有行,或者为另一个数字以将其设置为该行数。
但这并不会对性能产生重大影响。