我写给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
答案 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项目源代码,则可以通过以下方式解决此问题:
转到此位置的SharedResource类:[Project Source Code文件夹] \ Office \ BinaryFileFormat文件夹
更改EncodeDateTime功能,如下所示:
public double EncodeDateTime(DateTime value)
{
double days = (value - BaseDate).Days;
//if (days > 365) days++;
return days;
}
将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