0

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 です。

4

3 に答える 3

0

ExcelLibrary プロジェクトのソース コードを使用している場合は、次の方法でこれを修正できます。

  1. 次の場所にある SharedResource クラスに移動します: [プロジェクト ソース コード フォルダー]\Office\BinaryFileFormat フォルダー

  2. EncodeDateTime 関数を次のように変更します。

    public double EncodeDateTime(DateTime value)
    {
        double days = (value - BaseDate).Days;
        //if (days > 365) days++;
        return days;
    }
    
  3. DataTime オブジェクトを適切な形式で Cell に渡します。

    worksheet.Cells[iIndex, j] = new Cell(((DateTime)cellValue), new CellFormat(CellFormatType.DateTime, @"dd/MM/yyyy"));
    
于 2014-02-19T02:46:52.287 に答える
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
于 2016-09-14T06:17:02.827 に答える
0

最終的に、セルの値を DateTime ではなく文字列として渡しました。

 workSheet.Cells[0, 0] = new Cell(DateTime.Now.ToString(@"HH:mm:ss:ff"),
                                  new CellFormat(CellFormatType.DateTime, @"HH:mm:ss"));
于 2013-09-29T10:41:15.260 に答える