我正在创建一个.Net核心项目,该项目从不同类型的.xlsx文件中读取并将数据导出到MongoDB集合中。输入文件的“格式”,“列数”-etc是未知的。我没有任何问题确定十进制,布尔& 字符串数据类型。但是当单元格值包含日期时,OpenXML会以 epoch string 格式读取它。由于Cell的 DataType 属性为null,我无法确定是否正在读取Date字段,或者不是。以下是我用于阅读的代码片段 -
private static object GetCellValue(SpreadsheetDocument doc, Cell cell)
{
double res;
string value = cell.CellValue.InnerText;
if (cell.DataType != null && cell.DataType.Value == CellValues.SharedString) //Checking if it is a string
{
return doc.WorkbookPart.SharedStringTablePart.SharedStringTable.ChildElements.GetItem(int.Parse(value)).InnerText;
}
if (cell.DataType != null && cell.DataType.Value == CellValues.Boolean) //If contains boolean
{
return value == "1" ? true : false;
}
else
{
Double.TryParse(value, out res);
if (res != 0) //Determining if it is a Double value
{
return res;
}
return value; //Otherwise the "InnerText" value will be passed
}
}
除日期格式外,这似乎工作正常。因为它被转换为Decimal,这会弄乱数据。
p.s.-单元格的实际数据类型是通用类型,我无法在输入文件中进行更改。也不能使用“Microsoft.Office.Interop.Excel”包。