无法在 ClosedXML 中插入最小日期时间作为单元格值

Unable to insert minimum datetime as cell value in ClosedXML

ClosedXml 不允许将最小日期时间插入单元格。我的数据表包含 ClosedXml 不喜欢的最小日期时间值。

using (var workbook = new XLWorkbook())
{
    var dataTable = GetDataTable();
    workbook.Worksheets.Add(dataTable, "myWorksheet"); // Exception thrown
    workbook.SaveAs(filePath);
}

添加工作表时抛出异常: 'Unable to set cell value to 01/01/0001 00:00:00'

我怎样才能允许 ClosedXml 插入这个值而不抛出异常?例如,它可以写入空值而不是抛出异常。是否可以在不修改数据表以清除这些最小日期时间值的情况下解决这个问题?

尝试将 DateTime 默认值更改为 UTC:

DateTime dt = new DateTime();
dt.ToUniversalTime()   

Excel 本身不允许您将单元格值设置为如此低的日期值。自己试试吧。以前,可以在 ClosedXML 中设置值,但 Excel 会认为该文件已损坏。添加检查是为了避免创建看似损坏的文件。

我这里也有同样的情况。 解决方法很简单, 使数据表字段 datetime 具有空值 所以 ClosedXML 可以处理空日期并将其更改为空

正如其他人提到的,Excel 不允许 1970 年 1 月 1 日之前的日期。

我只是想补充一点,您可以使用 DateTime.UnixEpoch instead of DateTime.MinValue 作为最短约会时间。 DateTime.UnixEpoch 定义为 DaysTo1970 * TicksPerDay.

The value of this constant is equivalent to 00:00:00.0000000 UTC, January 1, 1970, in the Gregorian calendar.