Excel如何使用OpenXml和C#识别Date单元格以及如何执行相同操作

时间:2013-02-25 13:07:19

标签: c# excel openxml

我花了几个小时但仍然没有令人满意的答案。

当我点击Excel文档中的单元格时,它被标记为日期字段。但是,如果我使用OpenXml来调查DateType - 我将收到DataType为NULL的Cell对象。我注意到,在这种情况下,Cell.StyleIndex被设置为“116”,但我想保证,我将始终以与Excel相同的方式识别日期单元格。如何获取指示日期字段的数据样式索引的完整列表?

    public bool IsDateCell(Cell cell)
    {
        switch (cell.StyleIndex.Value)
        {
            case 116: return true;
            case 98: return true;
            case 283: return true;
            case 282: return true;
            default: return false;
        }
    }

1 个答案:

答案 0 :(得分:0)

我认为问题在于OPENXML如何决定细胞的类型。 在leat,我知道OLEDEB中存在类似的问题。 通常它是通过读取列中的前几个值来实现的。

你可以做的是在输入excel值之前将格式定义为日期, 或者使用HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Jet \ 4.0 \ Engines \ Excel \ - > TypeGuessRows。 见:

OleDB & mixed Excel datatypes : missing data

DBNull in non-empty cell when reading Excel file through OleDB