將 DBGrid 所列的資料 , 如何優化匯出 Excel 的速度呢? |
尚未結案
|
Nativita
一般會員 ![]() ![]() 發表:4 回覆:8 積分:2 註冊:2004-11-24 發送簡訊給我 |
|
cashxin2002
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ 如果只是一般的資料匯出至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 發送簡訊給我 |
|
cashxin2002
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
|
xxiaowang
中階會員 ![]() ![]() ![]() 發表:51 回覆:75 積分:55 註冊:2005-01-26 發送簡訊給我 |
|
cashxin2002
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
|
Nativita
一般會員 ![]() ![]() 發表:4 回覆:8 積分:2 註冊:2004-11-24 發送簡訊給我 |
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 發送簡訊給我 |
您好﹗
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 發送簡訊給我 |
|
cashxin2002
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
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 發送簡訊給我 |
|
Nativita
一般會員 ![]() ![]() 發表:4 回覆:8 積分:2 註冊:2004-11-24 發送簡訊給我 |
|
Nativita
一般會員 ![]() ![]() 發表:4 回覆:8 積分:2 註冊:2004-11-24 發送簡訊給我 |
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 發送簡訊給我 |
您好﹗ 真的是蠻奇怪的現象﹐小弟試沒有問題﹐可正常寫出為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 發送簡訊給我 |
|
xxiaowang
中階會員 ![]() ![]() ![]() 發表:51 回覆:75 積分:55 註冊:2005-01-26 發送簡訊給我 |
|
Nativita
一般會員 ![]() ![]() 發表:4 回覆:8 積分:2 註冊:2004-11-24 發送簡訊給我 |
|
Nativita
一般會員 ![]() ![]() 發表:4 回覆:8 積分:2 註冊:2004-11-24 發送簡訊給我 |
|
cashxin2002
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |