如何使用oledb读取连字符邮政编码

时间:2011-02-24 19:00:26

标签: c# excel datatable oledb

我有一个包含地址的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 --> ""

所以我想纠正这种行为,以便邮政编码按原样显示。如果我必须在连字符后切掉数字,那就没问题了。如何确保读取邮政编码?

1 个答案:

答案 0 :(得分:1)

Excel通常对如何格式化列有自己的想法。例如,如果你有一个包含邮政编码的列,有些列有加号4,有些没有加号,那么关于如何格式化该列几乎就是一个废话。也许Excel会假设它充满了Zip + 4,也许它会假设5位数的Zips,或者只是数字。我已经使用这些文件多年了,我确信微软使用随机数生成器来做出这个决定。

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

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

可能有用吗?

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