Excel返回日期而不是excel列中的值

时间:2014-05-20 13:08:34

标签: c# excel excel-interop

我有一个excel导入程序,它从excel工作表中获取数据并填充数据表。 我的函数返回的值类似于" 1/3/1900 9:36:00 AM"当细胞实际上包含" 3.4" 整个Excel工作表的格式为" Text"由于一些客户限制,我无法更改格式。

我的样本函数:

DataRow dataRow = table.Rows[i];

B= new B();
string value = (dataRow[index] != null) && (!dataRow[index].ToString().Trim().Equals("NA")) ?   dataRow[index].ToString().Trim() : null;
A= (value != null && value.Length!=0) ? value : A;
B.Name = A;

value = (dataRow[++index] != null) && (!dataRow[index].ToString().ToString().Trim().Equals("NA")) ? dataRow[index].ToString().Trim() : null;
B.Name += " " + value;

连接字符串是

string strConnect = "Provider=Microsoft.ACE.OLEDB.12.0;"
            + "Data Source='" + filePath + "';"
            + "Extended Properties='Excel 12.0;HDR=No;IMEX=1;'";

我正在使用IMEX = 1,即便如此我也无法找到确切的错误。

----------
Returning           --------  Ideally should return

1/3/1900 9:36:00 AM  ---------->> 3.4

1/3/1900 12:00:00 PM ---------->> 3.5

1/4/1900 2:24:00 AM  ---------->> 4.1.1

1/4/1900 2:24:00 AM  ---------->> 4.1.2

1/4/1900 2:24:00 AM  ---------->> 4.1.3

1/4/1900 4:48:00   ------------>> 4.2 

excel表中的样本,其中A列如下所示:

2013年5月16日

上午9:14:00 第

3

3.1

3.2

3.3

3.4

3.5

4.1

4.1.1

4.1.2

4.1.3

4.2

4.3

5

5.1

5.1.1

5.1.2

2 个答案:

答案 0 :(得分:1)

更改excel中的单元格类型。

  1. 选择所有列值
  2. 右键单击并选择格式化单元格
  3. 选择数字作为类型

答案 1 :(得分:0)

您可以通过将单元格格式化为常规数字或其他不是日期的内容来解决此问题(这是如何格式化单元格。)

使用如下所示的行格式为通用:

Range("A1").NumberFormat = "General"

其中A1表示您要格式化的范围。您可以扩展它以涵盖您所关注的所有单元格。

祝你好运!