为什么用Excel表读?

时间:2010-05-14 10:39:48

标签: excel

我正在逐个单元地从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

获取日期格式。为什么会这样?它抛出了“输入字符串格式不正确”的异常。为什么它不像同一列的其他单元格那样生成双精度值?

2 个答案:

答案 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();