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

如何複製DBGRID的資料至excel

答題得分者是:pedro
viya
一般會員


發表:16
回覆:19
積分:7
註冊:2008-09-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-12-24 15:11:59 IP:220.128.xxx.xxx 訂閱
請問版上各位高手,

搜尋版上的文章,都是將dbgrid的資料,整個匯出。

我想要的功能是,如何將(單筆或多筆)的資料,
貼至excel??
nihg
一般會員


發表:1
回覆:1
積分:0
註冊:2003-05-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-12-24 19:09:45 IP:122.234.xxx.xxx 訂閱
一般都是全部汇总出
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-12-25 09:18:28 IP:60.248.xxx.xxx 未訂閱
找了兩段的程式碼,請自行修改試驗,DBGrid.Option的dgMultiSelect要設為True

[code delphi]
procedure TBrCustOrdForm.Button1Click(Sender: TObject);
var
i, j: Integer;
s: string;
begin
if CustGrid.SelectedRows.Count>0 then
with CustGrid.DataSource.DataSet do
for i:=0 to CustGrid.SelectedRows.Count-1 do
begin
GotoBookmark(pointer(CustGrid.SelectedRows.Items[i]));
for j := 0 to FieldCount-1 do
begin

if (j>0) then s:=s ', ';
s:=s Fields[j].AsString;
end;
//Clipboard.SetTextBuf();
end;
end;

procedure TBrCustOrdForm.Button2Click(Sender: TObject);
var
A:LCID;
begin
Clipboard.AsText:=Pchar('測試' #9 '測試' #9 '123' #13#10 '測試');
A:=GetUserDefaultLCID();
app.Connect;
app.Visible[0]:=true;
// wb.ConnectTo(app.Workbooks.Open(ExtractFilePath(application.ExeName) 'A.XLS',
wb.ConnectTo(app.Workbooks.Open('c:\A.XLS',
EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
A));
ws.ConnectTo(app.Worksheets['sheet1'] as _WorkSheet);
ws.Activate(A);
ws.PasteSpecial;
app.Cells.Item[4,3].Value:='測試' #9 '測試中';
wb.Save(A);
wb.Close;
app.Quit;
app.Disconnect;
end;
[/code]
viya
一般會員


發表:16
回覆:19
積分:7
註冊:2008-09-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-12-25 09:20:17 IP:211.21.xxx.xxx 訂閱
利用GotoBookmark 可匯出所點選的資料。
不過礙於DBgrid本身的特性,好像只能匯出一整個row。 : (

想做複製多個 column,如下圖。然後按照對應位置轉出到excel
不曉得是否有什麼方法可以做出來 @@a
(以A3當成起始位置)
A1A2A3A4A5A6
C1E1
C2E2
C3E3
C4E4
C5E5
C6E6

===================引 用 nihg 文 章===================
一般都是全部汇总出
編輯記錄
viya 重新編輯於 2008-12-25 10:53:25, 註解 無‧
viya 重新編輯於 2008-12-25 10:53:56, 註解 無‧
jimmy_wei
高階會員


發表:9
回覆:176
積分:147
註冊:2003-08-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-12-25 09:28:24 IP:123.194.xxx.xxx 訂閱
那要看你是用什麼方法,把資料寫到excle,我想這已經是很多地方都可以
找的到答要的,如果你的function是傳dataset出去,然後整個寫到excle
那你只要先把你想要匯出到excel的資料,先加工,寫到另一個dataset,
看是一筆,還是你選到的多筆,然後,再將這個你加工的dataset傳到excel
就行了,我想輸出到excel的函式你應該有~~

拿我手頭上的這個function來說

procedure DataSet2Excel(var DS: TDataSet; var HeadString, LString, RString: TStrings; lShowTitle: Boolean);

我會把加工後的資料傳到DS這個dataset,就搞定了~~
viya
一般會員


發表:16
回覆:19
積分:7
註冊:2008-09-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-12-25 10:32:07 IP:211.21.xxx.xxx 訂閱
感謝perdo 熱心提供的程式碼。
感謝jimmy所提供的方法

這個方向我還沒試過,這幾天再找時間來試試看。^^ 謝謝。
===================引 用 jimmy_wei 文 章===================
那要看你是用什麼方法,把資料寫到excle,我想這已經是很多地方都可以
找的到答要的,如果你的function是傳dataset出去,然後整個寫到excle
那你只要先把你想要匯出到excel的資料,先加工,寫到另一個dataset,
看是一筆,還是你選到的多筆,然後,再將這個你加工的dataset傳到excel
就行了,我想輸出到excel的函式你應該有~~

拿我手頭上的這個function來說

procedure DataSet2Excel(var DS: TDataSet; var HeadString, LString, RString: TStrings; lShowTitle: Boolean);

我會把加工後的資料傳到DS這個dataset,就搞定了~~
viya
一般會員


發表:16
回覆:19
積分:7
註冊:2008-09-16

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-01-17 17:51:46 IP:220.128.xxx.xxx 訂閱
我誤會jimmy大的意思。哈。
J大跟P大的意思,應該是一樣的,都是對資料多筆匯出。而不是欄位匯出
不好意思,我在發問的時後,並沒有說清楚。造成大家誤會了。

後來自己try,並沒有試出來。結果還是請使用者,整筆匯出
分數給 提供程式的p大,也感謝j大的說明。 ^^

===================引 用 viya 文 章===================
感謝perdo 熱心提供的程式碼。
感謝jimmy所提供的方法

這個方向我還沒試過,這幾天再找時間來試試看。^^ 謝謝。
===================引 用 jimmy_wei 文 章===================
那要看你是用什麼方法,把資料寫到excle,我想這已經是很多地方都可以
找的到答要的,如果你的function是傳dataset出去,然後整個寫到excle
那你只要先把你想要匯出到excel的資料,先加工,寫到另一個dataset,
看是一筆,還是你選到的多筆,然後,再將這個你加工的dataset傳到excel
就行了,我想輸出到excel的函式你應該有~~

拿我手頭上的這個function來說

procedure DataSet2Excel(var DS: TDataSet; var HeadString, LString, RString: TStrings; lShowTitle: Boolean);

我會把加工後的資料傳到DS這個dataset,就搞定了~~
系統時間:2024-04-24 1:00:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!