1

C# 言語DataSetなどを使用するプログラムを作成しています。.xlsx ドキュメントにエクスポートしたい値が約 200,000 あります。

私のコード:

using Excel = Microsoft.Office.Interop.Excel;
...
Excel.Application excelApp = new Excel.Application();
Excel.Workbook excelworkbook = excelApp.Workbooks.Open(/location/);
Excel._Worksheet excelworkSheet = (Excel.Worksheet)excelApp.ActiveSheet;
...
excelApp.visible = true;
...
for (int i = 0; i < /value/; i++)
 for (int j = 0; j < /value/; j++) 
  excelworkSheet.Cells[i, j] = /value/;

うまく機能しますが、遅すぎます (少なくとも 5 ~ 10 分)。

何かアドバイスはありますか?

4

2 に答える 2

1

Excel については、VBA のみをプログラミングしたので、C# での正確な構文を示すことはできません。

しかし、私が気づいたのは、多くの人が誘惑されていることに気付いた何かをあなたがやっているということです:
Excel の各セルに個別にコードを書きます。読み取り/書き込み操作は、メモリで実行される操作と比較してかなり遅いです。

これらすべてのデータを定義された範囲に 1 ステップで書き込む関数にデータの配列を渡すと、より興味深いものになります。もちろん、そうする前に、範囲の次元を正しく設定する必要があります(配列のサイズと同じです)。

ただし、そうすると、パフォーマンスが向上するはずです。

于 2012-07-20T09:21:38.507 に答える