Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Excel数据字段转换问题_C#_Excel - Fatal编程技术网

C# Excel数据字段转换问题

C# Excel数据字段转换问题,c#,excel,C#,Excel,我目前有一张excel表格,其中一列为日期格式 当我打开电子表格时看到的是2009年12月29日,程序看到的是40176 当我将列更改为常规文本时,我发现这是当前的值 我的问题是如何读取值12/29/09而不是40176,或者如何将40176更改为有效日期 我的程序是c语言的,必须用c语言阅读# 这里是我的连接的示例代码,如果有帮助的话 Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Inte

我目前有一张excel表格,其中一列为日期格式

当我打开电子表格时看到的是2009年12月29日,程序看到的是40176

当我将列更改为常规文本时,我发现这是当前的值

我的问题是如何读取值12/29/09而不是40176,或者如何将40176更改为有效日期

我的程序是c语言的,必须用c语言阅读#


这里是我的连接的示例代码,如果有帮助的话

Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
string myPath = @"C:\Test.xls";
excelApp.Workbooks.Open(myPath, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "t", false, false, 0, true, 1, 0);

 Microsoft.Office.Interop.Excel.Sheets sheets = excelApp.Worksheets;
 Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)sheets.get_Item(1);
 excelApp.Visible = true;

 if(((Microsoft.Office.Interop.Excel.Range)excelApp.Cells[r, 1]).Value2 != null)
     DateString = ((Microsoft.Office.Interop.Excel.Range)excelApp.Cells[r, 1]).Value2.ToString();

您可以使用将double转换为DateTime值。

正如Reed Copsey所说,
DateTime.FromOADate()
方法将值转换为
DateTime
。但是,如果希望将2009年12月29日作为字符串,并且不想进一步操作它,则可以使用
cell.Text

使用excel
Text(val,format)
函数

例如:

在单元格A2中输入
=today()
,您将得到一个类似于40189的数字 如果您进入单元格A2


如果您输入
=TEXT(today(),“mm/dd/yyyyy”)
您会将今天的日期格式化为文本,它看起来像
“01/30/2012”

您可以使用TEXT功能

语法

Text(Value,FormatText)
示例

1) 我把40176放在excel A2中 2) 然后我在下面的公式中引用它

 =TEXT(A2,"mm/dd/yy")
在A3上

然后该值为2009年12月29日。就像你问的

注意事项:


如果你用单引号而不是双引号,它可能不起作用

你如何打开和阅读电子表格?Interop?Cory和我都欠你一杯啤酒:)当你将字段类型设置为visPropTypeDate时,这也适用于Visio日期。是的,4年后。。。你仍然让我开心D这应该是答案。在这种情况下,人们不应该使用“FromOADate()。你可以在需要的时候把它放回日期时间。。。