PB 電子会議室
発言No. | 更新日 | 題名(クリックすると発言内容と関連するコメントが表示されます) |
---|---|---|
22334 | 05/12/02 16:41:20 | RE(4):PB9.0: EXCEL取込 By tamataku |
22333 | 05/12/02 11:23:15 | RE(3):PB9.0: EXCEL取込 By pavel |
22330 | 05/11/30 19:14:24 | RE(2):PB9.0: EXCEL取込 By tamataku |
22327 | 05/11/30 15:04:26 | RE(1):PB9.0: EXCEL取込 By Hakofugu |
22326 | 05/11/29 21:25:32 | PB9.0: EXCEL取込 By tamataku |
カテゴリ:PowerBuilderの開発環境
日付:2005年11月29日 21:25 発信者:tamataku
題名:PB9.0: EXCEL取込
4万件ほどのEXCELデータを、
なるべく速いスピードで取込を行いたいのです。
oleオブジェクトを使用しての処理を行っているのですが、
1000件ほどでも時間がかかってしまいます。
なにかよいスクリプトの記述、方法はないでしょうか?
スクリプトの記述を簡単に以下に記載します。
************************************************************************************************
uo_ole ole_excel // OLEオブジェクト
ole_excel = CREATE uo_ole
// EXCEL接続
ole_excel.ConnectoNewObject(\"excel.application\")
// EXCELファイルopen
ole_excel.Application.Workbooks.Open(ls_pathnm) // ※ls_pathnmにはファイルパス格納
// 指定された行番号とカラム番号の範囲から値を読み込む(※引数として渡してある)
FOR ll_row = al_srow TO al_erow
// 値の取得(1行ずつ)
FOR li_colno = ai_scolno TO ai_ecolno
ls_value = String( ole_excel.Cells[ll_row,li_colno].Value )
IF IsNull( ls_value ) THEN ls_value = \"\"
ls_data = ls_data + \"~t\" + ls_value
ls_check = ls_check + ls_value
NEXT
// データがなければ終了
IF Trim( ls_check ) = \"\" THEN EXIT
// インポート
ls_data = Mid( ls_data, 2 )
li_ret = ads_imp.ImportString( ls_data, 1, 1, 1, ai_ecolno - ai_scolno + 1, ai_dscolno )
// エラーの場合、メッセージを出力し処理を終了する。
IF li_ret < 0 THEN
i_ret = -1
EXIT
END IF
ls_data = \"\"
ls_check = \"\"
NEXT
// 正常の場合、戻り値を設定
IF li_ret <> -1 THEN li_ret = 1
// Excelの終了
ole_Excel.Application.Workbooks.Close()
ole_excel.Application.Quit
// OLEオブジェクトの解除
ole_excel.DisConnectObject()
*************************************************************************************************
以上よろしくお願いします。
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS (記載なし)
DBMS (記載なし)
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.