請教將DBgrid中的資料寫入excel.... |
答題得分者是:monkey66
|
ohlala
一般會員 發表:2 回覆:6 積分:1 註冊:2002-10-18 發送簡訊給我 |
請問要如何才能寫入...
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 發送簡訊給我 |
|
moko
一般會員 發表:31 回覆:34 積分:13 註冊:2002-09-20 發送簡訊給我 |
|
ohlala
一般會員 發表:2 回覆:6 積分:1 註冊:2002-10-18 發送簡訊給我 |
引言: 這個站長好像有寫一個範例程式~ 你可以去找找看~ -- 聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心 傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心謝謝您...站長的我有看過囉。 目前我的問題是要怎樣用迴圈把資料寫入... 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 發送簡訊給我 |
引言: 呵呵,正好我也參考了站長大大寫的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 發送簡訊給我 |
|
ohlala
一般會員 發表:2 回覆:6 積分:1 註冊:2002-10-18 發送簡訊給我 |
我的問題暫時解決囉.....目前是把欄位寫死,因為不會寫活的><
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 發送簡訊給我 |
試試看
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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |