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 (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.