关于asp.net:使用C#导入Excel文档时,如何防止前导零被剥离

关于asp.net:使用C#导入Excel文档时,如何防止前导零被剥离

How do you prevent leading zeros from being stripped when importing an excel doc using c#

我可以连接并读取Excel文件,没有问题。 但是,当导入诸如邮政编码之类的具有前导零的数据时,如何防止excel猜测数据类型并在处理过程中去除前导零呢?


我相信您必须在连接字符串中设置该选项以强制文本导入,而不是自动检测它。

1
2
3
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读取多于前8行的信息:

更改

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

为0表示读取所有行,或为另一个数字将其设置为该行数。

但这并不会对性能产生重大影响。


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


前缀为"


在字符串之前添加" \ t"。它将使字符串出现在新选项卡中。


从Sql Server发送值00022556作为'=" 00022556"'是处理前导零问题的绝佳方法


将文件另存为制表符分隔的文本文件也效果很好。

- -旧
不幸的是,我们不能依靠excel文档的列来保持特定格式,因为用户会定期将数据粘贴到其中。如果我们依赖某列的某种数据类型,我不希望该应用程序崩溃。

前缀为'会起作用,一旦excel文档中已经存在数据,是否有合理的方法以编程方式执行该操作?


我认为实现此目的的方法是格式化源excel文件,以使该列的格式设置为"文本"而不??是"常规"。选择整个列,然后右键单击并选择格式单元格,然后从选项列表中选择文本。

我认为这将明确定义列内容为文本,应将其视为文本。

让我知道是否可行。


推荐阅读