excel到DataTable到csv邮政编码w /连字符没有显示使用C#OLEDB

时间:2011-01-31 17:39:59

标签: c# excel csv oledb

我有一个包含地址的Excel电子表格。我正在使用OLEDB从电子表格中读取数据并将其存储到DataTable中。然后我遍历DataTable并创建我的输出,该输出被写入.csv文件。我在C#中做了所有这些。

问题在于:当我打开.csv文件时,任何连字符的邮政编码都被替换为0。

  

12345-1234 - > 0

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

另外,我可以在代码中做些什么来维护邮政编码中的前导0?邮政编码如下:

  

01234 - > 1234

我能在代码中做些什么来保持领先0?

3 个答案:

答案 0 :(得分:0)

如果邮政编码在excel电子表格中格式化,您应该阅读它们,将它们存储在内存中,并将它们全部写为字符串。不要将它们转换为整数。

答案 1 :(得分:0)

问题是CSV文件必须由Excel解释,并假设看起来像数字的东西应该根据默认的数字规则来处理。遗憾的是,修复程序并不适用于所有可能的情况。您可以执行以下选项之一:

  1. 保持CSV文件不变,并使用Excel中的数据导入向导
  2. 将前导勾选'写入字段
  3. 将该字段写为等式="01234"
  4. 如果您只是使用Excel查看数据,那么第二个或第三个选项可能会起作用。如果您需要使用其他公式中的数据,那么您可能希望转到第一条路线。如果你正在检查Excel中的数据,但是你想在其他地方使用它,我也建议你去第一条路线。

答案 2 :(得分:0)

我刚刚测试了您的数据,此处发布的此method有效。

即。当放入DataSet时,单元格值保持其值“12345-1234”。前导零也被发送到DataSet。 (邮政编码:00601)