我有一个包含地址的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 --> ""
所以我想纠正这种行为,以便邮政编码按原样显示。如果我必须在连字符后切掉数字,那就没问题了。如何确保读取邮政编码?
答案 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很困难而且速度不是很快。