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

請問大量匯出Excel方法

缺席
allenpower
一般會員


發表:13
回覆:13
積分:5
註冊:2007-01-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-06-07 19:39:38 IP:59.124.xxx.xxx 訂閱
我是用ADO+DataSource+DBGrid 從MSSQL 抓取資料
但匯出到EXCEL我只能做到一欄一欄匯
所以在資料量多的時後 要花很久的時間
請問如何能改善大量匯出Excel速度
這問題我之前PO 錯到Delphi 抱歉
如下是我的程式
i=0;
ADOQuery1->First();
while (i < ADOQuery1->RecordCount){
rSQL0=ADOQuery1->Fields->Fields[0]->AsInteger;
rSQL1=ADOQuery1->Fields->Fields[1]->AsInteger;
rSQL2=ADOQuery1->Fields->Fields[2]->AsInteger;
rSQL3=ADOQuery1->Fields->Fields[3]->AsInteger;
rSQL4=ADOQuery1->Fields->Fields[4]->AsInteger;
rSQL5=ADOQuery1->Fields->Fields[5]->AsInteger;
rSQL6=ADOQuery1->Fields->Fields[6]->AsString;
rSQL7=ADOQuery1->Fields->Fields[7]->AsString;
Range=Worksheet.OlePropertyGet("Cells",i 2,1);
Range.OlePropertySet("Value",rSQL0);
Range=Worksheet.OlePropertyGet("Cells",i 2,2);
Range.OlePropertySet("Value",rSQL1);
Range=Worksheet.OlePropertyGet("Cells",i 2,3);
Range.OlePropertySet("Value",rSQL2);
Range=Worksheet.OlePropertyGet("Cells",i 2,4);
Range.OlePropertySet("Value",rSQL3);
Range=Worksheet.OlePropertyGet("Cells",i 2,5);
Range.OlePropertySet("Value",rSQL4);
Range=Worksheet.OlePropertyGet("Cells",i 2,6);
Range.OlePropertySet("Value",rSQL5);
Range=Worksheet.OlePropertyGet("Cells",i 2,7);
Range.OlePropertySet("Value",StringToOleStr(rSQL6));
Range=Worksheet.OlePropertyGet("Cells",i 2,8);
Range.OlePropertySet("Value",StringToOleStr(rSQL7));
i=i 1;
ADOQuery1->MoveBy(1);
}




------
P
hua2000
中階會員


發表:102
回覆:200
積分:65
註冊:2006-11-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-06-07 21:34:53 IP:218.14.xxx.xxx 未訂閱
你可以用ems export   component,這個對匯出到EXCEL裡很有用,速度極快,而且附帶了很多別的有用的功能。


你可以試一下,
Jasonwong
版主


發表:49
回覆:931
積分:581
註冊:2006-10-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-06-08 09:33:35 IP:211.75.xxx.xxx 未訂閱
XLSReadWrite 元件也不錯, 速度也超快
------
聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心
傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
allenpower
一般會員


發表:13
回覆:13
積分:5
註冊:2007-01-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-06-08 18:35:31 IP:59.124.xxx.xxx 訂閱
請問上述兩個 是在bcb的嗎 
為何我在bcb找不到呢
------
P
allenpower
一般會員


發表:13
回覆:13
積分:5
註冊:2007-01-06

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-06-22 17:32:53 IP:59.124.xxx.xxx 訂閱

===================引 用 allenpower 文 章===================
我是用ADO DataSource DBGrid 從MSSQL 抓取資料
但匯出到EXCEL我只能做到一欄一欄匯
所以在資料量多的時後 要花很久的時間
請問如何能改善大量匯出Excel速度
這問題我之前PO 錯到Delphi 抱歉
如下是我的程式
i=0;
ADOQuery1->First();
while (i < ADOQuery1->RecordCount){
rSQL0=ADOQuery1->Fields->Fields[0]->AsInteger;
rSQL1=ADOQuery1->Fields->Fields[1]->AsInteger;
rSQL2=ADOQuery1->Fields->Fields[2]->AsInteger;
rSQL3=ADOQuery1->Fields->Fields[3]->AsInteger;
rSQL4=ADOQuery1->Fields->Fields[4]->AsInteger;
rSQL5=ADOQuery1->Fields->Fields[5]->AsInteger;
rSQL6=ADOQuery1->Fields->Fields[6]->AsString;
rSQL7=ADOQuery1->Fields->Fields[7]->AsString;
Range=Worksheet.OlePropertyGet("Cells",i 2,1);
Range.OlePropertySet("Value",rSQL0);
Range=Worksheet.OlePropertyGet("Cells",i 2,2);
Range.OlePropertySet("Value",rSQL1);
Range=Worksheet.OlePropertyGet("Cells",i 2,3);
Range.OlePropertySet("Value",rSQL2);
Range=Worksheet.OlePropertyGet("Cells",i 2,4);
Range.OlePropertySet("Value",rSQL3);
Range=Worksheet.OlePropertyGet("Cells",i 2,5);
Range.OlePropertySet("Value",rSQL4);
Range=Worksheet.OlePropertyGet("Cells",i 2,6);
Range.OlePropertySet("Value",rSQL5);
Range=Worksheet.OlePropertyGet("Cells",i 2,7);
Range.OlePropertySet("Value",StringToOleStr(rSQL6));
Range=Worksheet.OlePropertyGet("Cells",i 2,8);
Range.OlePropertySet("Value",StringToOleStr(rSQL7));
i=i 1;
ADOQuery1->MoveBy(1);
}

?
----------
int rSQL,cSQL;
String aa;
Variant TotalVal;
RowCount=ADOQuery1->RecordCount;
TotalVal=VarArrayCreate(OPENARRAY(int),(0,RowCount-1,0,7),varVariant);//設定陣列範圍
ADOQuery1->First();
for(rSQL=0;rSQL {
for(cSQL=0;cSQL<8;cSQL )
{
TotalVal.PutElement(ADOQuery1->Fields->Fields[cSQL]->AsString,rSQL,cSQL);

}
ADOQuery1->Next();
}
aa="H";
aa=aa IntToStr(RowCount 1);
Range=Worksheet.OlePropertyGet("Range","A2",aa.c_str());//設定excel範圍
Range.OlePropertySet("Value",TotalVal);

這是在ktop爬文 解決的
分享給各位大大
如有修正的地方請給予指教 謝謝

ktop真是讓人想哭 又感動的地方
------
P
系統時間:2024-04-26 14:04:44
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!