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

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

【问题讨论】:

    标签: c# asp.net excel ado.net


    【解决方案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”。它会使字符串出现在新标签中。

                  【讨论】:

                    猜你喜欢
                    • 2010-09-30
                    • 1970-01-01
                    • 1970-01-01
                    • 2017-01-15
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2012-05-30
                    相关资源
                    最近更新 更多