使用ExcelLibrary将DateTime四舍五入到第二天

时间:2013-09-28 18:43:44

标签: excel datetime excellibrary

我写给Excel的日期时间总是会到第二天:

workSheet.Cells[0, 0] = new Cell(DateTime.Now, new CellFormat(CellFormatType.DateTime, @"HH:mm:ss"));

在输出Excel文件中,单元格获取此值:29/09/2013 00:00:00

此示例中的DateTime.Now是28/09/2013 19:42:23

3 个答案:

答案 0 :(得分:0)

我最终将单元格值作为字符串而不是DateTime传递:

 workSheet.Cells[0, 0] = new Cell(DateTime.Now.ToString(@"HH:mm:ss:ff"),
                                  new CellFormat(CellFormatType.DateTime, @"HH:mm:ss"));

答案 1 :(得分:0)

如果您使用的是ExcelLibrary项目源代码,则可以通过以下方式解决此问题:

  1. 转到此位置的SharedResource类:[Project Source Code文件夹] \ Office \ BinaryFileFormat文件夹

  2. 更改EncodeDateTime功能,如下所示:

    public double EncodeDateTime(DateTime value)
    {
        double days = (value - BaseDate).Days;
        //if (days > 365) days++;
        return days;
    }
    
  3. 将DataTime对象传递给具有首选格式的单元格:

    worksheet.Cells[iIndex, j] = new Cell(((DateTime)cellValue), new CellFormat(CellFormatType.DateTime, @"dd/MM/yyyy"));
    

答案 2 :(得分:0)

您需要使用DateTime.FromOADate将日期格式从OLE自动化转换为.net格式。

If oCell.Format.FormatType = CellFormatType.Date OrElse oCell.Format.FormatType = CellFormatType.DateTime Then
 Dim d As Double = Double.Parse(oCell.Value)

 Debug.print(DateTime.FromOADate(d))

End If