2

参照の内容を読み取り、同じ結果と Interop/COM の Range.Value を取得する方法を理解しようとしています...つまり、返されたオブジェクト [,] には文字列、DateTime、および double が含まれています。

私はExcelDNA(および基になるXlCall.Excelを使用してC APIを呼び出します)と両方を使用しています...

ExcelReference.GetValue()XlCall.Excel( XlCall.xlfDeref, reference )

どちらも、object[,]Interop/COM の Range.Value2 と同等の値を返します。つまり、返される object[,] には文字列と double のみが含まれます。

これに関する問題は、日付が double として返され、値が adoubleまたは aであるかどうかを判断する方法がないことDateTimeです。

4

1 に答える 1

1

ExcelReference.GetValue()これは、セルの格納された値ではないため、DateTime を返すことはありません。これは、数値 (double) 値に適用される単なる表示形式です。通貨とパーセンテージの書式設定も同様です。

「セルの書式設定に起因する追加の数字や記号を含む、現在表示されているセルの内容」をテキストとして読み取ることができます。オプション53を使用して、C APIで呼び出しを使用xlfGetCellします。ただし、文字列が日付/時刻を表しているかどうかを自分で判断する必要があります。

「セルの数値形式をテキストとして読み取ることもできます (たとえば、「m/d/yy」または「General」)」。xlfGetCellオプション 7を使用します。

于 2015-12-14T15:00:47.140 に答える