開発環境にDELPHI3.1、データベースにインターベース5.6を使用し、「取引データをMSエクセルに出力する」アプリを作ったところ、データのテキスト出力と比較すると格段に遅いのです。しかしテキストにCSV形式で吐き出したファイルをエクセルで開くといった処置はしたくないのです。現在はエクセルファイルのセルに「Aの1はこの値を入れる」といった処理を行うようにしています。
「その問題について知っている。」と言う方がいらっしゃいましたらご指導宜しくお願いします。
複数セルのクリップボードを介した転送というのが速いとどこかに書いてましたが
実際にやってみると結構大変です。
1列の区切りはコンマではなくてタブです。行の区切りは改行です。
ペースト先に結合セルがあるとエラーで止まります。
結合セル内にペーストすると結合が解除されます。
-なので、ワークブック内に表示用のシートと転送先のシートを用意して
表示用シートのセル内に
=IF(転送先シート!A1="","",転送先シート!A1)
とでも書いておくのがいいんじゃないでしょうか。
Delphiマガジンのvol.2にExcelへのデータ送信について
特集しています。
その中では、1000行10列に出力する場合どの程度
時間がかかるか記載されています。
結果は以下の通りです。
『DDE』 を用いた場合 38秒
『OLEオートメーション』 を用いた場合 1分53秒
『OLEオートメーション+クリップボード』を用いた場合 55秒
『Excelクリエーター』* を用いた場合 2秒
* アドバンス技研(株)製 ActiveXコンポーネント
Excelクリエーターの体験版はhttp://www.adv.co.jp より入手
できます。(01/10/7現在)
ちなみに私はアドバンス技研(株)とはなんも関わりもありません。
nicさん、guchiさん ありがとうございます。
nicさんに教えていただいた方法は確かに...大変でした。
でも、確かに早くなりました。この方法で今回はいこうと思います。
ありがとうございました。
guchiさんDelphiマガジン買いました。参考にしています。
ありがとうございました。
ツイート | ![]() |