線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2705
推到 Plurk!
推到 Facebook!

將 DBGrid 所列的資料 , 如何優化匯出 Excel 的速度呢?

尚未結案
Nativita
一般會員


發表:4
回覆:8
積分:2
註冊:2004-11-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-24 14:24:14 IP:61.218.xxx.xxx 未訂閱
不好意思 , 我是透過 "XLSfile" 的 "DataSetToXLS" 一筆一筆寫入Excel 的 , 請教各位前輩 , 提升匯出速度的方法 , 有哪些呢?
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-25 09:29:59 IP:202.62.xxx.xxx 未訂閱
您好﹗    如果只是一般的資料匯出至xls檔案作業﹐小弟通常使用SQL語法進行﹐其特點是效率好速度快﹐缺點是無法做格式上﹑字體等的處理﹐語法如下﹕
begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Text := 'Select * Into [Sheet1] '
    + 'In "D:\Sample.xls" "Excel 8.0;" from 資料表名稱';
  ADOQuery1.ExecSQL;
end;
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
Nativita
一般會員


發表:4
回覆:8
積分:2
註冊:2004-11-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-25 12:01:20 IP:61.218.xxx.xxx 未訂閱
不好意思,非常謝謝你的回覆,我有按照你的方法操作,不過,會出現 Incorrect syntax near the keyword "In" 的 Error Message , 那我有將我的 ADOQuery1.SQL.GetTest pop-up 出來,如下列所示 Select * Into [Sheet1] In 'D:\Sample.xls''Excel 8.0;' from PURMA 我使用 Delphi 7 的環境, 請教你一下我是不是少了什麼呢?
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-05-25 12:13:27 IP:202.62.xxx.xxx 未訂閱
您好﹗
ADOQuery1.SQL.Text := 'Select * Into [Sheet1] '
    + 'In "D:\Sample.xls"_"Excel 8.0;" from 資料表名稱';
//以上紅色下劃線處是一個空格
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
xxiaowang
中階會員


發表:51
回覆:75
積分:55
註冊:2005-01-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-05-25 13:49:37 IP:219.134.xxx.xxx 未訂閱
Hi,cashxin2002, 还是会出现错误:Incorrect syntax near the keyword "In"
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-05-25 14:10:18 IP:202.62.xxx.xxx 未訂閱
xxiaowang您好﹗    貼出您的程式碼部分來看看﹒    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
Nativita
一般會員


發表:4
回覆:8
積分:2
註冊:2004-11-24

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-05-25 14:56:34 IP:61.218.xxx.xxx 未訂閱
HI,cashxin2002: 不好意思,我也是會出現同樣的錯誤訊息耶!那我把Source Code 列在下面 , 可以再麻煩你看看嗎? begin ADOQuery1.Close; ADOQuery1.SQL.Text :='Select * Into [Sheet1] ' 'In ''D:\Sample.xls'' ''Excel 8.0;'' from PURMA '; //Showmessage(ADOQuery1.SQL.GetText); ADOQuery1.Close; ADOQuery1.Open; end;
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-05-25 15:53:30 IP:202.62.xxx.xxx 未訂閱
您好﹗
begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Text :='Select * Into [Sheet1] '
    + 'In ''D:\Sample.xls'' ''Excel 8.0;'' from PURMA';
  //Showmessage(ADOQuery1.SQL.GetText);
  ADOQuery1.Close;
  ADOQuery1.Open;
  //以上紅色兩句刪除﹐換成如下﹕
  ADOQuery1.ExecSQL;
end;
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
xxiaowang
中階會員


發表:51
回覆:75
積分:55
註冊:2005-01-26

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-05-25 17:24:08 IP:219.134.xxx.xxx 未訂閱
Hi,cashxin2002, 我的代码与你的一样,但就是会出现前面所提到的错误。 begin adoquery1.Close; adoquery1.SQL.Text:='Select * Into [Sheet1] ' 'In ''D:\Sample.xls'' ''Excel 8.0;'' from T_PRODUCT_WP'; adoquery1.ExecSQL; end;
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-05-25 18:30:55 IP:202.62.xxx.xxx 未訂閱
xxiaowang您好﹗    從語法上來看﹐應該沒有問題﹐但錯誤信息卻出現在'In'附近的語法錯誤﹐檢查看看在語句中是否有使用到全角(兩個字節的英文數字或標點符號等等)之類的﹐以下為完整語法﹕
begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Text := 'Select * Into [Sheet1] '
    + 'In "D:\Sample.xls" "Excel 8.0;" From 資料表名稱';
  //[Sheet1]之后有一個空格
  //D:\Sample.xls和Excel 8.0;左右分別為雙引號
  //"D:\Sample.xls和"Excel 8.0;"中間有個空格
  //Excel和8.0;中間有個空格
  ADOQuery1.ExecSQL;
end;
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-05-25 20:34:32 IP:218.32.xxx.xxx 未訂閱
不好意思 http://delphi.ktop.com.tw/topic.php?topic_id=22849 是否有參考過.
Nativita
一般會員


發表:4
回覆:8
積分:2
註冊:2004-11-24

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-05-26 09:09:43 IP:61.218.xxx.xxx 未訂閱
不好意思耶..我就是下載這個procedure DataSetToXLS 匯出 Excel的 , 但是 , User 還是覺得太慢了 ,所以, 我才會想有沒有什麼方法,可以解決速度的問題?
Nativita
一般會員


發表:4
回覆:8
積分:2
註冊:2004-11-24

發送簡訊給我
#13 引用回覆 回覆 發表時間:2005-05-27 09:16:12 IP:61.218.xxx.xxx 未訂閱
Cashxin2002 , 您好,不好意思,我還是會出現相同的錯誤訊息耶...我將我的原始程式碼貼在下列,可以麻煩你幫看看嗎? 拜託你了...>___<.... begin ADOQuery1.Close; //ADOQuery1.SQL.Clear; ADOQuery1.SQL.Text := 'Select * Into [Sheet1] ' 'In ''D:\Sample.xls'' ''Excel 8.0;'' From PURMA'; //Showmessage(ADOQuery1.SQL.GetText); ADOQuery1.ExecSQL; end;
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#14 引用回覆 回覆 發表時間:2005-05-27 11:31:18 IP:202.62.xxx.xxx 未訂閱
您好﹗    真的是蠻奇怪的現象﹐小弟試沒有問題﹐可正常寫出為xls檔案﹐請問您的Delphi版本﹐試試更新ADO(MDAC2.8)﹒    或者直接用ADOConnection元件來轉﹐如下﹕
begin
  ADOConnection1.Execute('Select * Into [Sheet1] '
    + 'In "D:\Sample.xls" "Excel 8.0;" From PURMA');
end;
小弟幫您做了個Demo﹐分別用ADOQuery和ADOConnection來做匯出的動作﹐供您參考﹐下載連接如下﹕ http://delphi.ktop.com.tw/topic.php?TOPIC_ID=71934 解壓縮后即可使用﹐包含Access資料庫檔案﹐相對路徑連接﹐故在任何目錄下皆可執行﹐匯出的檔案路徑位于D碟根目錄﹒ ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
jo_jonathan_jo
一般會員


發表:0
回覆:2
積分:0
註冊:2005-02-15

發送簡訊給我
#15 引用回覆 回覆 發表時間:2005-05-27 13:36:06 IP:210.202.xxx.xxx 未訂閱
此連線方式在Access(*.mdb)是正常的 但在SQL Server 2000 (個人版)卻會出現錯誤 BCB5 win 2000 professional 可以在SQL Server所提供的SQL Query analyzer直接下指令察看 會出現 伺服器: 訊息 156,層級 15,狀態 1,行 1 關鍵字 'In' 附近的語法不正確。 SQL Server 線上說明: 156 關鍵字 ''%1!'' 附近的語法不正確。 目前也尚未找到解法(努力研究中....)
xxiaowang
中階會員


發表:51
回覆:75
積分:55
註冊:2005-01-26

發送簡訊給我
#16 引用回覆 回覆 發表時間:2005-05-27 14:15:51 IP:219.134.xxx.xxx 未訂閱
此方式联Access能正常工作。 但连SQL SERVER 或InterBase都会出现语法错误。 我用的是Delphi7 MSSQL2000,Interbase6.5
Nativita
一般會員


發表:4
回覆:8
積分:2
註冊:2004-11-24

發送簡訊給我
#17 引用回覆 回覆 發表時間:2005-05-30 10:06:17 IP:61.218.xxx.xxx 未訂閱
hi,cashxin2002: 我試過囉..可以了耶..真是太謝謝你了..^_^
Nativita
一般會員


發表:4
回覆:8
積分:2
註冊:2004-11-24

發送簡訊給我
#18 引用回覆 回覆 發表時間:2005-05-30 12:16:59 IP:61.218.xxx.xxx 未訂閱
Hi,cashixin2002,不好意思喔! 我透過 access 連接 SQL_Server or Oracle 的資料表是可以的,所以,這支 Demo 的程式,是不是只可以 for Access 使用呢?
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#19 引用回覆 回覆 發表時間:2005-05-30 12:29:00 IP:202.62.xxx.xxx 未訂閱
您好﹗    Demo在測試時僅針對Access資料庫檔案﹒    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
系統時間:2024-06-22 4:12:33
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!