全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1538
推到 Plurk!
推到 Facebook!

請問DBGrid2Excel.exe的執行速度

答題得分者是:領航天使
tina72
一般會員


發表:6
回覆:11
積分:3
註冊:2002-10-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-11-05 01:01:38 IP:61.223.xxx.xxx 未訂閱
站長大人您好~ 我下載了您發表於http://delphi.ktop.com.tw/topic.php?TOPIC_ID=19473 的dbgrid2excel.exe回來執行 並參考其他前輩的程式另寫了一個exe檔 因為連結的資料表資料多達兩千多筆 所以在儲存時花很久時間 一度以為當機了(我將excel的visible設為false,因此看不到它執行) 想請問站長:不知是否有方法提高它的執行速度? 還是這是作業系統本身的效率問題? 我是新手一枚,懇請前輩不吝賜教啦~^^ 發表人 - tina72 於 2002/11/05 01:05:11 發表人 - tina72 於 2002/11/05 01:06:39
------
=== 我是新手一枚,感謝前輩不吝賜教^^ ===
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-11-05 08:39:50 IP:192.168.xxx.xxx 未訂閱
引言: 站長大人您好~ 我下載了您發表於http://delphi.ktop.com.tw/topic.php?TOPIC_ID=19473 的dbgrid2excel.exe回來執行 並參考其他前輩的程式另寫了一個exe檔 因為連結的資料表資料多達兩千多筆 所以在儲存時花很久時間 一度以為當機了(我將excel的visible設為false,因此看不到它執行) 想請問站長:不知是否有方法提高它的執行速度? 還是這是作業系統本身的效率問題? 我是新手一枚,懇請前輩不吝賜教啦~^^
因為是採用OLE連結,一格一格填入資料, 所以速度快不了,要快的話就不能用此法, 可以考慮用: 1.ADO Excel 2.XLS-ReadWrite-II 元件 第一個方法要到ODBC設定中去設定與Excel的連結,然後就可以把Excel當做資料庫一樣使用,但必需是整齊的表格式Excel欄位,若有很亂格式的Excel檔會出現資料欄位型態不符的錯誤! 第二個方法採用它家廠商的元件,XLS-ReadWrite-II,這個元件可以直接產生Excel檔案,且自由格式,功能相當強,速度也不錯,但...無法填入BIG5碼,一套約台幣5000多元! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
tina72
一般會員


發表:6
回覆:11
積分:3
註冊:2002-10-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-11-07 17:34:19 IP:61.222.xxx.xxx 未訂閱
首先先感謝站長大人的答覆~ 關於您說的第一個方法:ADO Excel 我目前是用ADO去連結Excel 但資料必須設定為唯讀,不允許使用者修改或儲存 只能另存新檔(*.xls),再叫用此檔案 原本想使用SaveDialog來做儲存動作 可是ADOQuery的SaveToFile()只能存成ADTG或XML檔案 無法再叫用此檔案成為Grid型式(不知道是我不會還是真的不行??) 所以引用了您的做法 但資料量大就會顯得慢 不知道有沒有其他方法可以解決? 至於第二個方法:XLS-ReadWrite-II 元件 嗯...因為我還是學生 所以...買不起...... 但還是謝謝您提供這個訊息~ 順道提一下,因為老師建議,所以使用BCB來寫專題 可是在這個站上瀏覽時發現,好像Delphi比較多人使用 想再問一下:Delphi跟c builder有何不同?(除了語法以外) 是不是Delphi功能比較強ㄚ?(看久了也好想玩玩......) 再次感謝站長大人~ 我是新手一枚,感謝前輩不吝賜教^^
------
=== 我是新手一枚,感謝前輩不吝賜教^^ ===
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-11-07 18:16:41 IP:192.168.xxx.xxx 未訂閱
引言: 首先先感謝站長大人的答覆~ 關於您說的第一個方法:ADO Excel 我目前是用ADO去連結Excel 但資料必須設定為唯讀,不允許使用者修改或儲存 只能另存新檔(*.xls),再叫用此檔案 原本想使用SaveDialog來做儲存動作 可是ADOQuery的SaveToFile()只能存成ADTG或XML檔案 無法再叫用此檔案成為Grid型式(不知道是我不會還是真的不行??) 所以引用了您的做法 但資料量大就會顯得慢 不知道有沒有其他方法可以解決? 至於第二個方法:XLS-ReadWrite-II 元件 嗯...因為我還是學生 所以...買不起...... 但還是謝謝您提供這個訊息~ 順道提一下,因為老師建議,所以使用BCB來寫專題 可是在這個站上瀏覽時發現,好像Delphi比較多人使用 想再問一下:Delphi跟c builder有何不同?(除了語法以外) 是不是Delphi功能比較強ㄚ?(看久了也好想玩玩......) 再次感謝站長大人~ 我是新手一枚,感謝前輩不吝賜教^^
若採用OLE連接Excel速度肯定是慢的,我也暫時找不到解決辦法! XLS-ReadWrite我也還未購買,再等原廠解決BIG5問題! Delphi因為出的早,不然說不定我也會用C Builder 理論上C因為低階,所以應該彈性較大, 但因為Delphi的資源多,使用者也多,所以蓋過了BCB的光芒! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-11-08 11:11:48 IP:203.204.xxx.xxx 未訂閱
引言: 至於第二個方法:XLS-ReadWrite-II 元件 嗯...因為我還是學生 所以...買不起...... 但還是謝謝您提供這個訊息~ 一枚,感謝前輩不吝賜教^^
深度歷險有XLSFILE.zip,這是一個免費的元件,在沒有Excel的電腦也可以用,還有Source Code和Demo找來用看看吧。
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.taconet.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-11-09 12:27:21 IP:192.168.xxx.xxx 未訂閱
引言: 深度歷險有XLSFILE.zip,這是一個免費的元件,在沒有Excel的電腦也可以用,還有Source Code和Demo找來用看看吧。
本站也有xlsfile元件可以下載 請見:http://delphi.ktop.com.tw/topic.php?TOPIC_ID=17618 經我測試的結果 1.可以獨立寫入.XLS檔 2.不需安裝MicroSoft的Excel 3.速度很快 4.但...無法讀出原有的Excel檔,它有寫read屬性但未開放出來, 經我修改程式碼強迫開放出來使用,發現Read Excel File時會造成無窮迴圈然後當機. 所以,若您只是要單純的輸出至Excel檔,可以使用xlsfile元件! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-11-12 15:55:19 IP:192.168.xxx.xxx 未訂閱
ccchen會員改寫個一個procedure可以達到,將資料庫直接轉入EXCEL檔(不用OLE/ADO/也不用裝Office),速度很快喔,請見:http://delphi.ktop.com.tw/topic.php?TOPIC_ID=22849 但無法讀出.XLS檔,只能寫入! 另外我之前說過的XLS-ReadWrite-II元件已經有支援BIG5的版本出來的,最新版為 ver 1.13 請見:http://www.axolot.com/components 站長已經準備訂購這套元件了! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
tina72
一般會員


發表:6
回覆:11
積分:3
註冊:2002-10-06

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-11-13 11:40:48 IP:61.223.xxx.xxx 未訂閱
感謝站長大人在百忙之中還幫我解惑~ 沒想到竟然還有這麼好用的元件可以使用 可是...為什麼我 > 我是新手一枚,感謝前輩不吝賜教^^
------
=== 我是新手一枚,感謝前輩不吝賜教^^ ===
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#9 引用回覆 回覆 發表時間:2002-11-13 12:48:15 IP:192.168.xxx.xxx 未訂閱
引言: 感謝站長大人在百忙之中還幫我解惑~ 沒想到竟然還有這麼好用的元件可以使用 可是...為什麼我 > 我是新手一枚,感謝前輩不吝賜教^^ < face="Verdana, Arial, Helvetica"> 安裝好後好像不是產生新頁,是在原先的原件某一頁次中您找看看! 還有您可以看看我的範例程式,它直接用Procedure不用裝元件, 請見:http://delphi.ktop.com.tw/topic.php?TOPIC_ID=22849 ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
tina72
一般會員


發表:6
回覆:11
積分:3
註冊:2002-10-06

發送簡訊給我
#10 引用回覆 回覆 發表時間:2002-11-17 01:55:19 IP:61.223.xxx.xxx 未訂閱
不知道為什麼?? 我照著站長大人的範例程式做,卻還是一筆一筆讀資料 會不會是我用
------
=== 我是新手一枚,感謝前輩不吝賜教^^ ===
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#11 引用回覆 回覆 發表時間:2002-11-17 08:35:02 IP:192.168.xxx.xxx 未訂閱
引言: 不知道為什麼?? 我照著站長大人的範例程式做,卻還是一筆一筆讀資料 會不會是我用>< face="Verdana, Arial, Helvetica"> 對,是直接使用DataSetToXLS() Procedure沒錯, 若您還會覺得慢, 1.您可以將DBGrid移除,直接將TTable或TQuery傳入函式中 2.轉入Excel當然也要一筆一筆轉入,可能您的Table欄位數目太多才會造成速度慢 3.可否給一下您轉的資料表的背景資料? ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
tina72
一般會員


發表:6
回覆:11
積分:3
註冊:2002-10-06

發送簡訊給我
#12 引用回覆 回覆 發表時間:2002-11-18 01:22:00 IP:61.223.xxx.xxx 未訂閱
引言: 1.您可以將DBGrid移除,直接將TTable或TQuery傳入函式中 2.轉入Excel當然也要一筆一筆轉入,可能您的Table欄位數目太多才會造成速度慢 3.可否給一下您轉的資料表的背景資料?
1.直接傳入似乎比較快耶~不過還是花了兩.三分鐘....... 2.原來是因為轉入excel也要一筆一筆來~ 3.我的資料表資料型態沒有特別設定(通用),資料內容最多25字元(英文), 欄位只有6欄,倒是筆數多達近6萬,或許是因為這樣才覺得慢吧? p.s.發生了一件怪事:關閉執行檔時竟然出現bof或eof為true的錯誤訊息 我是新手一枚,感謝前輩不吝賜教^^
------
=== 我是新手一枚,感謝前輩不吝賜教^^ ===
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#13 引用回覆 回覆 發表時間:2002-11-18 08:24:36 IP:192.168.xxx.xxx 未訂閱
引言:
引言: 1.您可以將DBGrid移除,直接將TTable或TQuery傳入函式中 2.轉入Excel當然也要一筆一筆轉入,可能您的Table欄位數目太多才會造成速度慢 3.可否給一下您轉的資料表的背景資料?
1.直接傳入似乎比較快耶~不過還是花了兩.三分鐘....... 2.原來是因為轉入excel也要一筆一筆來~ 3.我的資料表資料型態沒有特別設定(通用),資料內容最多25字元(英文), 欄位只有6欄,倒是筆數多達近6萬,或許是因為這樣才覺得慢吧? p.s.發生了一件怪事:關閉執行檔時竟然出現bof或eof為true的錯誤訊息 我是新手一枚,感謝前輩不吝賜教^^ < face="Verdana, Arial, Helvetica"> 這是花在讀取Table所花的時間,光是寫入.XLS檔的時間應該不到一分鐘, 您可以改寫一個固定的值到.XLS檔,試看看相同筆數所花的時間! 這個錯誤訊習應該是您採用ADO元件時造成的,我記得要更新新版的Windows的ODBC Driver! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
tina72
一般會員


發表:6
回覆:11
積分:3
註冊:2002-10-06

發送簡訊給我
#14 引用回覆 回覆 發表時間:2002-11-18 14:32:29 IP:61.223.xxx.xxx 未訂閱
引言: 這是花在讀取Table所花的時間,光是寫入.XLS檔的時間應該不到一分鐘, 您可以改寫一個固定的值到.XLS檔,試看看相同筆數所花的時間! 這個錯誤訊習應該是您採用ADO元件時造成的,我記得要更新新版的Windows的ODBC Driver! ~~~Delphi K.Top討論區站長~~~
原來如此呀~ 萬分感謝站長大人辛勤的指教! 我會再努力嘗試的~ --想給站長 >
------
=== 我是新手一枚,感謝前輩不吝賜教^^ ===
系統時間:2024-07-03 11:08:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!