トップへ(mam-mam.net/)

DelphiからMS-EXCELのセルに高速に値を入れる

検索:

「DelphiからMS-EXCELのセルに高速に値を入れる」

Delphiからマイクロソフト社のエクセルのセルに多くの値をいれているのですが、
とても遅いです。高速にする方法はありませんか

回答

いったん、Delphiで配列変数に代入してから、セルに入力すれば速くなります。

ソース

procedure TForm1.Button1Click(Sender: TObject);
var Excel,WB,WS:variant;
    v:array of array of Double;
    r,c:integer;
begin
  Excel := CreateOleObject('Excel.Application');
  //MS-EXCELを表示する
  Excel.Visible:= True;
  //ブックを追加
  WB:=Excel.Workbooks.Add;
  //1つめのシートを変数に設定
  WS:=WB.Sheets[1];

  //配列の作成
  setlength(v,20,100);
  for r:=0 to 19 do
    for c:=0 to 99 do
      v[r,c]:=c+(r+1)*100;


  //セルに値を入れる。
  WS.Range[WS.Cells[1,1],WS.Cells[20,100]]:=variant(v);

  //MS-Excelを終了する
  Excel.Quit;
end;