Excel如何识别日期单元格,以及如何使用OpenXml和C#进行识别

本文关键字:识别 OpenXml 何使用 单元格 何识别 Excel 日期 | 更新日期: 2023-09-27 18:01:04

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

当我单击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;
        }
    }

Excel如何识别日期单元格,以及如何使用OpenXml和C#进行识别

我认为问题在于OPENXML如何决定单元的类型。至少我知道OLEDEB也有类似的问题。通常,它通过读取列中的前几个值来完成此操作。

您可以在将值输入excel之前将格式定义为日期,或使用HKEY_LOCAL_MACHINE''SOFTWARE''Microsoft''Jet''4.0''Engines''Excel''-->TypeGuessRows。参见:

OleDB&混合Excel数据类型:缺少数据

通过OleDB 读取Excel文件时,非空单元格中的DBNull