Wil*_*ill 2 c# excel excel-interop
可能重复:
从Excel工作表读取日期时间值
我正在尝试使用C#中的Interop从Excel电子表格中读取DateTime值.我一直都在表单的"C"栏中.我的代码如下:
public void addTime(Microsoft.Office.Interop.Excel.Workbook workbook)
{
Excel.Worksheet ws = (Excel.Worksheet)workbook.Worksheets.get_Item("Time Series");
Excel.Range range = ws.UsedRange;
int num = 0;
for (int row = 1; row <= range.Rows.Count; row++ )
{
String dtString = ((Excel.Range)ws.Cells[row, "C"]).Value2.ToString();
DateTime dt = Convert.ToDateTime(dtString);
this.addEdgeInstance(dt);
}
}
Run Code Online (Sandbox Code Playgroud)
然而,这在当时没有读到.读取字符串有效,但Convert函数不起作用.我是否以不同的方式阅读了价值观?值可以变化吗?(IE:我可以输入'11/11'或'11/11/2011',因为Excel在Excel中工作时将这两个条目识别为valie DateTime值吗?)
哟哟萌芽.我为你修改了一些代码,以反映帮助器转换函数的用法.转换发生在这一行:DateTime dt = DateTime.Parse(ConvertToDateTime(dtString)); 可以根据需要随意修改辅助函数以返回DateTime变量而不是字符串,但这基本上是相同的.希望这可以帮助!
public void addTime(Microsoft.Office.Interop.Excel.Workbook workbook)
{
Excel.Worksheet ws = (Excel.Worksheet)workbook.Worksheets.get_Item("Time Series");
Excel.Range range = ws.UsedRange;
int num = 0;
for (int row = 1; row <= range.Rows.Count; row++ )
{
String dtString = ((Excel.Range)ws.Cells[row, "C"]).Value2.ToString();
DateTime dt = DateTime.Parse(ConvertToDateTime(dtString));
this.addEdgeInstance(dt);
}
}
public static string ConvertToDateTime(string strExcelDate)
{
double excelDate;
try
{
excelDate = Convert.ToDouble(strExcelDate);
}
catch
{
return strExcelDate;
}
if (excelDate < 1)
{
throw new ArgumentException("Excel dates cannot be smaller than 0.");
}
DateTime dateOfReference = new DateTime(1900, 1, 1);
if (excelDate > 60d)
{
excelDate = excelDate - 2;
}
else
{
excelDate = excelDate - 1;
}
return dateOfReference.AddDays(excelDate).ToShortDateString();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11050 次 |
| 最近记录: |