Excel如何识别date单元格,以及如何使用OpenXml和C#

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

当我点击Excel文档中的单元格时,它被标记为date字段。 但是,如果我使用OpenXml来调查DateType – 我将接收DataType为NULL的Cell对象。 我注意到,在这种情况下,Cell.StyleIndex设置为“116”,但我想保证,我会一直认识date单元格,就像Excel可以做到的一样。 如何获取指示date字段的数据样式索引的完整列表?

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; } } 

我认为问题在于OPENXML如何决定单元格的types。 在我看来,我知道OLEDEB有类似的问题。 通常它是通过读取列中的前几个值来实现的。

你可以做的是定义格式为date,然后再inputexcel的值,或者使用HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Jet \ 4.0 \ Engines \ Excel \ – > TypeGuessRows进行播放。 看到:

OleDB和混合的Excel数据types:缺less数据

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