-1

我正在使用EPPlus excelpackagewithc#spreadsheet. 电子表格有两个单独的列DateTime. 问题是日期值是2/4/2020,但它返回为2/4/2020 12:00:00 AM. 时间值是12:21 AM但它返回12/30/1899 12:21:00 PM。我想要的结果是返回值,因为它们在spreadsheet. 我不清楚为什么会发生这种情况或如何根据我的需要解决问题。

using (ExcelPackage package = new ExcelPackage(fs))
    {
        ExcelWorkbook excelWorkBook = package.Workbook;
        ExcelWorksheet ws = excelWorkBook.Worksheets.First();
        int rowCount = 0;
        rowCount = ws.Dimension.End.Row;

        for (int r = 2; r <= rowCount; r++)
        {
            string status = ws.Cells[r, 11].Value?.ToString();
            string deliveredDate = ws.Cells[r, 15].Value?.ToString();
            string deliveredTime = ws.Cells[r, 17].Value?.ToString();
        }
        fs.Close();
    }
}
4

1 回答 1

0

这是实际值和所述值的2 个字符串表示之间的正常混合。这尤其发生在 DateTime 值上。

问题是日期值是“2/4/2020”,但它返回为“2/4/2020 12:00:00 AM”

日期本身并没有真正起作用。几十年来,我们总是有 DateTimes。日期和时间作为单独的类型?大跌。这是难以解释的事情之一,但一旦遇到潜在问题就会变得明显。

由于在输入过程中没有给出具体的时间,因此采用了默认值 - 00:00:00 或 12 AM。然后将单元格设置为仅显示“日期”部分。相当于“2/4/2020 12:00:00 AM”的东西确实存在。名为 Microsoft Excel(或您使用的任何内容)的显示引擎只是被告知不要通过单元格格式显示该部分。

于 2020-02-07T17:19:03.107 回答