我正在逐个单元地从C#interop服务中读取Excel表格。我的Excel工作表有日期单元格。它会生成一些双精度值,我将它们按日期转换为:
double dbl = Convert.ToDouble(((Excel.Range)worksheet.Cells[iRowindex, colIndex_q17]).Value2);
string strDate3 = DateTime.FromOADate(dbl).ToShortDateString();
drRow[dtSourceEXLData.Columns[constants.VisualDate]] = strDate3;
行?但有一段时间发生了
的价值((Excel.Range)worksheet.Cells[iRowindex,colIndex_q17]).Value2
获取日期格式。为什么会这样?它抛出了“输入字符串格式不正确”的异常。为什么它不像同一列的其他单元格那样生成双精度值?
答案 0 :(得分:0)
这些单元格中的值实际上可能是一个字符串
答案 1 :(得分:0)
无论如何,我找到了解决方案:
object obj=((Excel.Range)worksheet.Cells[iRowindex, colIndex_q17]).Value2;
Type type = obj.GetType();
string strDate3 = string.Empty;
double dbl = 0.0;
if (type == typeof(System.Double))
{
dbl = Convert.ToDouble(((Excel.Range)worksheet.Cells[iRowindex, colIndex_q17]).Value2);
strDate3 = DateTime.FromOADate(dbl).ToShortDateString();
}
else
{
DateTime dt = new DateTime().Date;
dt = Convert.ToDateTime(obj).Date;
strDate3 = dt.ToShortDateString(); //DateTime.FromOADate(dbl).ToShortDateString();
}
drRow[dtSourceEXLData.Columns[constants.VisualDate]] = strDate3; //((Excel.Range)worksheet.Cells[iRowindex, colIndex_q16]).Value2.ToString();