使用 C# 导入 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\4.0\Engines\Excel\TypeGuessRows
为 0 则读取所有行,或者为另一个数字将其设置为该行数。
但这并不会对性能造成轻微影响。
我认为执行此操作的方法是格式化源 Excel 文件,使该列格式化为文本而不是常规。选择整个列,右键单击并选择单元格格式,从选项列表中选择文本。
我认为这将明确定义列内容是文本,并且应该如此对待。
让我知道这是否有效。
将文件另存为制表符分隔的文本文件也效果很好。
---不幸的是,我们不能依靠Excel Doc的列以特定格式保留,因为用户会定期将数据粘贴到其中。如果我们依赖列的特定数据类型,我不希望应用程序崩溃。
前缀 ' 可以工作,一旦数据已存在于 Excel 文档中,是否有合理的方法以编程方式执行此操作?
发送值 00022556
作为 '=" 00022556"'
来自 Sql server 是处理前导零问题的绝佳方法
在字符串前添加“ ”。它将使字符串出现在新选项卡中。
不隶属于 StackOverflow