【问题标题】:How to read hyphen zip codes using oledb如何使用 oledb 读取连字符邮政编码
【发布时间】:2011-07-03 19:28:07
【问题描述】:

我有一个包含地址的 Excel 电子表格。我正在使用 OLEDB 从电子表格中读取数据并将其存储到 C# 中的 DataTable 中。

String connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filename + @";Extended Properties=""Excel 8.0;HDR=1;IMEX=1""";

问题是:当我使用 DataSet Visualizer 时,邮政编码字段中有一个空字符串。

12345-1234 --> ""

所以我想纠正这种行为,以便邮政编码按应有的方式显示。如果我必须砍掉连字符后的数字,那很好。如何确保邮政编码被读取?

【问题讨论】:

    标签: c# excel datatable oledb


    【解决方案1】:

    对于列的格式,Excel 通常有自己的想法。例如,如果您有一个包含邮政编码的列,其中一些包含 Plus 4,而另一些则没有,那么对于该列的格式设置几乎是一个废话。也许 Excel 会假设它充满了 Zip+4,也许它会假设 5 位数的 Zips,或者只是数字。我已经使用这些文件多年,我确信 Microsoft 在做出此决定时使用了随机数生成器。

    至于你原来的问题,根据site,CONVERT 是一个有效的 SQL 标量函数,所以可能类似于

    SELECT CONVERT(BadField, SQL_CHAR) AS FixedField FROM [Table$]
    

    可以吗?

    我的第一个想法是建议使用 COM(而不是 OleDb)从电子表格中读取数据。我很确定您能够读取每个单元格的格式并相应地处理它,但我总是发现通过 COM 的 Excel 很困难,而且速度不是很快。

    【讨论】:

    • 我当然会尝试您的转换建议,但是 COM?我不是互操作的忠实粉丝,但我最终可能不得不考虑它。这个站点有一个 ODBC 函数列表,但我使用的是 OLEDB。这有什么不同吗?
    • 我得到了它的工作,但我不确定如何。IMEX=1 和更改原始单元格格式的一些组合可以解决问题,但我从你的帖子中学到了很多,因此答案标记.
    • 我忘了提一下,用户在 Excel 中指定的单元格格式几乎总是对您在 OleDb 中查看数据的方式没有影响。你用什么格式让它工作?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-21
    • 1970-01-01
    • 2015-04-12
    • 1970-01-01
    • 2014-01-31
    • 1970-01-01
    相关资源
    最近更新 更多