2

基本的な問題は、Excel が 1900-01-01 を値 1 として表していることだと理解しています。ただし、Excel では、1900 年より前の値を手動で入力することができます。

// this converts the DataTable to an Object[,]
DataTable table = ...
Object[,] arr = DataTableUtils.toObjectArray(table, false);

Range r00 = r0.get_Resize(arr.GetLength(0), arr.GetLength(1));
r00.Value = arr; // <-- this will crash if ...

arr[,] に 1899 年 12 月 31 日より前の DateTime オブジェクトが含まれている場合、0x800A03EC 例外が発生します。奇妙なことに、1899-12-31 は問題ありません。Excel は値に 1 日を加算します。もともと、1900 年より前の日付を 1900-01-01 に置き換えましたが、出力ファイルでは 1900-01-02 でした!

今のところ、私は悪い DateTime 値を置き換える回避策に取り組んでいます。ただし、誰かがより良い解決策を持っている場合は、私に知らせてください。

4

0 に答える 0