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

Posted

技术标签:

【中文标题】使用c#导入excel文档时如何防止前导零被剥离【英文标题】:How do you prevent leading zeros from being stripped when importing an excel doc using c# 【发布时间】:2010-09-06 13:51:31 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

Provider=Microsoft.ACE.OLEDB.12.0;
    Data Source=c:\path\to\myfile.xlsx;
    Extended Properties=\"Excel 12.0 Xml;IMEX=1\";

您的里程可能会因您安装的版本而异。 IMEX=1 扩展属性告诉 Excel 将混合数据视为文本。

【讨论】:

【参考方案2】:

前缀为'

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

有一个注册表黑客可以强制 Excel 在读取列以确定类型时读取超过前 8 行:

改变

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

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

并不是说这会对性能产生轻微影响。

【讨论】:

【参考方案5】:

我认为这样做的方法是格式化源 excel 文件,以便将列格式化为文本而不是常规。选择整列并右键单击并选择格式单元格,从选项列表中选择文本。

我认为这将明确定义列内容是文本,并且应该被视为文本。

让我知道这是否有效。

【讨论】:

【参考方案6】:

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

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

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

【讨论】:

【参考方案7】:

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

【讨论】:

【参考方案8】:

在您的字符串前添加“\t”。它会使字符串出现在新标签中。

【讨论】:

以上是关于使用c#导入excel文档时如何防止前导零被剥离的主要内容,如果未能解决你的问题,请参考以下文章

格式化输出输入

将使用 PHP 创建的 csv 文件导入 Excel 时,如何在数字字符串值中保留前导零?

Excel 正在从 CSV 文件中去除前导 0

c#如何在winform中打开一个excel文档呢

C# NPOI 导入与导出Excel文档 兼容xlsx, xls(xf13中已经引用了xlsx的npoi)

pgSQL:插入日期格式(前导零)?