C# Excel数据字段转换问题
我目前有一张excel表格,其中一列为日期格式 当我打开电子表格时看到的是2009年12月29日,程序看到的是40176 当我将列更改为常规文本时,我发现这是当前的值 我的问题是如何读取值12/29/09而不是40176,或者如何将40176更改为有效日期 我的程序是c语言的,必须用c语言阅读#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
这里是我的连接的示例代码,如果有帮助的话
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
。使用excelText(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()。你可以在需要的时候把它放回日期时间。。。