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

請教將DBgrid中的資料寫入excel....

答題得分者是:monkey66
ohlala
一般會員


發表:2
回覆:6
積分:1
註冊:2002-10-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-10-18 13:49:31 IP:211.74.xxx.xxx 未訂閱
請問要如何才能寫入... procedure TForm1.Button2Click(Sender: TObject); begin    Try      ExcelApplication1.Connect;      ExcelApplication1.Visible[0]:=True;      ExcelApplication1.Workbooks.Open('d:\test.xls',false,false,EmptyParam,'',false,false,EmptyParam,EmptyParam,false,false,EmptyParam,false,0);    Except    end;  //    ExcelApplication1.Workbooks[1].Worksheets[1].  //    ExcelApplication1.Worksheets.Item['Sheet1'];  //    ExcelApplication1.Quit; end;    謝謝大家
Jasonwong
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-10-18 14:19:06 IP:202.145.xxx.xxx 未訂閱
這個站長好像有寫一個範例程式~ 你可以去找找看~ -- 聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心 傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
------
聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心
傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
moko
一般會員


發表:31
回覆:34
積分:13
註冊:2002-09-20

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-10-18 16:27:59 IP:210.65.xxx.xxx 未訂閱
呵呵,正好我也參考了站長大大寫的dbgrid2excel範例,想請教一下,當轉入excel時,可以設定欄位名稱為粗體字 & 預先設好欄位大小嗎?這樣就不用再把欄位拉大了.而且看起來比較漂亮整齊,請問要怎麼修改呢?謝謝各位高手!
ohlala
一般會員


發表:2
回覆:6
積分:1
註冊:2002-10-18

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-10-18 17:51:00 IP:211.74.xxx.xxx 未訂閱
引言: 這個站長好像有寫一個範例程式~ 你可以去找找看~ -- 聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心 傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
謝謝您...站長的我有看過囉。 目前我的問題是要怎樣用迴圈把資料寫入... procedure TForm1.Button2Click(Sender: TObject); Type excelchars = ARRAY[0..25] of char; VAR excelarray : excelchars; I : Integer; begin Try ExcelApplication1.Connect; ExcelApplication1.Visible[0]:=True; ExcelApplication1.Workbooks.Open('d:\test.xls',false,false,EmptyParam,'',false,false,EmptyParam,EmptyParam,false,false,EmptyParam,false,0); Except end; For I :=0 To 25 DO begin excelarray[I] := Chr(65 I); end; ADOTable1.First; {把cursor移動到第一筆} with ADOTable1 do begin Edit1.Text:=FieldByName('員工編號').AsString; Edit2.Text:=FieldByName('姓名').AsString; Edit3.Text:=FieldByName('名').AsString; Edit4.Text:=FieldByName('職稱').AsString; Edit5.Text:=FieldByName('出生日期').AsString; Edit6.Text:=FieldByName('電話號碼').AsString; end; {用迴圈將資料由第一筆逐筆寫入} While NOT ADOTable1.Eof do begin ExcelApplication1.Range['A1','A1'].Value:=Edit1.Text; ExcelApplication1.Range['A1','B1'].Value:=Edit2.Text; ExcelApplication1.Range['A1','C1'].Value:=Edit3.Text; ExcelApplication1.Range['A1','D1'].Value:=Edit4.Text; ExcelApplication1.Range['A1','E1'].Value:=Edit5.Text; ExcelApplication1.Range['A1','F1'].Value:=Edit6.Text; ADOTable1.Next;{將cursor移動到下一筆} with ADOTable1 do begin Edit1.Text:=FieldByName('員工編號').AsString; Edit2.Text:=FieldByName('姓名').AsString; Edit3.Text:=FieldByName('名').AsString; Edit4.Text:=FieldByName('職稱').AsString; Edit5.Text:=FieldByName('出生日期').AsString; Edit6.Text:=FieldByName('電話號碼').AsString; end; end; //這行是測試 ExcelApplication1.Range['A7','d7'].Value:=Edit1.Text; ExcelApplication1.Quit; ShowMessage('資料已經正確匯入'); end;
領航天使
站長


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-10-19 09:01:57 IP:210.202.xxx.xxx 未訂閱
引言: 呵呵,正好我也參考了站長大大寫的dbgrid2excel範例,想請教一下,當轉入excel時,可以設定欄位名稱為粗體字 & 預先設好欄位大小嗎?這樣就不用再把欄位拉大了.而且看起來比較漂亮整齊,請問要怎麼修改呢?謝謝各位高手! < face="Verdana, Arial, Helvetica"> 此功能已加入我的範例程式中了, 請見 :http://delphi.ktop.com.tw/topic.php?TOPIC_ID=19473 ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
kkccgg
初階會員


發表:50
回覆:54
積分:30
註冊:2002-07-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-10-20 13:22:40 IP:203.204.xxx.xxx 未訂閱
請教: (1)如果偶要控制顯示格底色要如何處理 (2)可否excel自動存檔並離開excel (3)像這方面的資料哪裡有詳細的解說    thanks
ohlala
一般會員


發表:2
回覆:6
積分:1
註冊:2002-10-18

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-10-21 10:05:55 IP:211.74.xxx.xxx 未訂閱
我的問題暫時解決囉.....目前是把欄位寫死,因為不會寫活的>< procedure TForm1.Button2Click(Sender: TObject); //Type //   excelchars = ARRAY[0..25] of char; VAR //  excelarray : excelchars;   I : Integer;   J : String;    begin    Try      ExcelApplication1.Connect;      ExcelApplication1.Visible[0]:=True;      ExcelApplication1.Workbooks.Open('d:\test.xls',false,false,EmptyParam,'',false,false,EmptyParam,EmptyParam,false,false,EmptyParam,false,0);    Except    end;    //  For I :=0 To 25 DO //    begin //    excelarray[I] := Chr(65+I); //    end;   ADOTable1.First; {把cursor移動到第一筆}   with ADOTable1 do   begin      tablerefresh;   end;   {用迴圈將資料由第一筆逐筆寫入}   I := 0;   While NOT ADOTable1.Eof do   begin     J := IntToStr(I+1);     ExcelApplication1.Range['A'+J,'A'+J].Value:=Edit1.Text;     ExcelApplication1.Range['B'+J,'B'+J].Value:=Edit2.Text;     ExcelApplication1.Range['C'+J,'C'+J].Value:=Edit3.Text;     ExcelApplication1.Range['D'+J,'D'+J].Value:=Edit4.Text;     ExcelApplication1.Range['E'+J,'E'+J].Value:=Edit5.Text;     ExcelApplication1.Range['F'+J,'F'+J].Value:=Edit6.Text;     I :=I+1;     ADOTable1.Next;{將cursor移動到下一筆}     with ADOTable1 do     begin       tablerefresh;     end;   end;   ShowMessage('資料已經正確匯入'); end; 註:tablerefresh為副程式: procedure TForm1.tablerefresh; begin    with ADOTable1 do     begin       Edit1.Text:=FieldByName('員工編號').AsString;       Edit2.Text:=FieldByName('姓名').AsString;       Edit3.Text:=FieldByName('名').AsString;       Edit4.Text:=FieldByName('職稱').AsString;       Edit5.Text:=FieldByName('出生日期').AsString;       Edit6.Text:=FieldByName('電話號碼').AsString;     end; end;    
monkey66
一般會員


發表:1
回覆:6
積分:6
註冊:2002-06-19

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-10-25 09:31:20 IP:211.73.xxx.xxx 未訂閱
試試看 with excelworksheet1 do begin //showmessage(Cells.item[1,i].value); if vartostr(Cells.item[i,1].value) <> '' then begin blankcount := 0 ; if vartostr(cells.Item[i,3].value) <> '' then begin tmp1 := cells.Item[i,1]; tmp2 := cells.Item[i,2]; try cells.Item[i,10].value := strtodatetime(tmp2) - strtodatetime(tmp1); except end; end; end
ohlala
一般會員


發表:2
回覆:6
積分:1
註冊:2002-10-18

發送簡訊給我
#9 引用回覆 回覆 發表時間:2002-11-18 08:48:39 IP:211.74.xxx.xxx 未訂閱
monkey66 兄感謝您囉...... < >< >
系統時間:2024-06-02 0:04:15
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!