我花了几个小时但仍然没有令人满意的答案。
当我点击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;
}
}
答案 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