我目前有一张excel表,其中一列是日期格式。
我打开电子表格时看到的内容类似于12/29/09,程序看到了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();
答案 0 :(得分:12)
您可以使用DateTime.FromOADate()将double转换为DateTime值。
答案 1 :(得分:2)
正如Reed Copsey所说,DateTime.FromOADate()
方法会将值转换为DateTime
。但是,如果您希望将12/29/09作为字符串,并且不想再操纵它,则可以使用cell.Text
代替。
答案 2 :(得分:1)
使用excel TEXT(val,format)
功能。
示例:
在单元格A2中输入=today()
,你会得到一个像40189这样的数字
如果你进入单元格A2
如果您输入=TEXT(today(),"mm/dd/yyyy")
,今天的日期格式化为文字,它将显示为"01/30/2012"
答案 3 :(得分:0)
您可以使用文字功能。
<强>语法强>
Text(Value,FormatText)
示例强>
1)我把40176放在excel A2中 2)然后我在下面的公式中引用它
=TEXT(A2,"mm/dd/yy")
A3上的
然后价值是12/29/09。就像你问的那样
<强>注意:强>
如果您使用单引号而不是双引号,则可能无效