2

Excelオブジェクトを作成し、いくつかの操作を行う必要があるac#プログラムがあります。ここに私のコードの一部があります:

// c# code:

workSheet.Cells[1, 1] = "=2012/9/20";       //asign "2012/9/20" to cell[1,1] in Excel
double d = workSheet.Cells[1, 1].value();   // by default, Excel will return 11.17
Debug.Print(d.ToString());                  //c#:  d = 11.1777777777778

出力を再び「2012/9/20」にする方法は?

いくつかのコードを試しましたが、失敗しました:

DateTime str = DateTime.FromOADate(d);     //c#: str = 1/10/1900 4:16:00 AM
DateTime str = new DateTime((long)d);      //c#: str = 1/1/0001 12:00:00 AM
4

4 に答える 4

13

これを試すことができます:

最初にセルにフォーマットを設定します。

 ws.Cells[1,1].Style.Numberformat.Format = "yyyy/MM/dd";

次に、値を DateTime として設定します。

workSheet.Cells[1, 1] =new DateTime(2012,9,20);

値を取得するには、次を使用します。

double d = double.Parse(workSheet.Cells[1, 1].value());
DateTime conv = DateTime.FromOADate(d);
于 2012-09-24T08:13:55.433 に答える
3

「=2012/9/20」と入力すると、これが数式であることを Excel に伝えます。2012 を 9 で割ると、20 で割ると 11.17777777778 になります。

=記号なしで日付を保存してみてください。

于 2012-09-24T08:11:32.470 に答える
2

リテラルまたは書式設定済みの値を Excel セルに保存する場合は、値の前に一重引用符を付けます'。たとえば、workSheet.Cells[1, 1] = "'2012/9/20";.

于 2012-09-24T08:13:11.843 に答える
0

おい、あなたのExcelの値は日付ではありません。先頭の等号を削除します。

これを行うと、時間の適切な double 値が得られます (これは OADate 関数を介して変換できます)。あなたが今得るものはナンセンスです。

于 2016-05-07T06:52:01.820 に答える