无法使用OpenXML识别日期格式

时间:2018-04-20 09:58:52

标签: c# excel .net-core openxml openxml-sdk

我正在创建一个.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”包。

0 个答案:

没有答案