如何使用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时,在邮政编码字段中有一个空string。

 12345-1234 --> "" 

所以我想纠正这种行为,使邮政编码出现,因为它应该。 如果我必须在连字符后切掉数字,那就没问题了。 我怎样才能确保邮政编码被读取?

Excel通常有自己的想法应该如何格式化一列。 例如,如果您有一个包含邮政编码的列,其中一些使用Plus 4,而另一些则不使用,那么对于如何对列进行格式化,这几乎是一个垃圾邮件。 也许Excel会假设它用Zip + 4填充,也许它会采用5位数字的拉链,或者只是数字。 我已经使用这些文件多年了,我确信微软使用随机数字生成器来做出这个决定。

至于你原来的问题,根据这个网站 ,CONVERT是一个有效的SQL标量函数,所以也许类似

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

可能工作?

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