【DO!BOOK・ページリンク】
2008_migaro_techreport_001   111 / 136

BOOKをみる

10秒後にBOOKのページに移動します


109 図2 改善イメージ 1.Excel出力 図1 OLEを使用したExcelへの書き出し パフォーマンスの改善 OLE を利用したExcel の出力処 理で件数が多い場合、処理時間が 長くて困っています。 Delphi でOLE を利用してExcel を出力する場合、処理量によって はかなりの時間がかかってしまう。  このとき実際に時間がかかっている箇所 を特定すると、Delphi ⇔ Excel 間で発生 する処理が問題であることがわかる。つま り、同じ内容をExcel に出力するにしても、 Delphi ⇔ Excel 間の通信回数を減らす工 夫をすることで、格段にパフォーマンス向 上を図ることができる。 ・処理時間のかかる例  まず、処理時間がかかってしまう例を示 す。【図1】  この場合、書き込むデータごとに、 Excel のCell へアクセスを行ってしまう。 そのため、大量の書き込みを行うと Delphi ⇔ Excel 間の通信回数が多くなっ てしまい、パフォーマンスに問題が出てくる。 ・通信回数を減らした例  次に、通信回数を減らす工夫を行った例 を示す。【図2】  一括でExcel へ書き込むために、文字 列を使用している。フィールドごとに#9、 改行ごとに#13#10 のリテラルを挟んで編 集することで、複数行の内容も文字列で格 納することができる。  また、Excel のCell 構成を考えて、2 次 元配列で扱ってもよい。  この場合、書き込むデータが多くとも、 その内容を一括でExcel へ書き込む。そ のため、通信回数は1 回(またはまとまっ た回数)しか行われないので、Delphi ⇔ Excel 間の通信回数を格段に減らすことが できる。  これらによって、Delphi ⇔ Excel 間で 一番大きい処理時間を短縮できることになる。 Q. A.