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

資料填入Excel

尚未結案
qaeroman
一般會員


發表:6
回覆:6
積分:2
註冊:2003-06-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-10-23 20:02:31 IP:218.166.xxx.xxx 未訂閱
各位高手: 我有個程式想把資料庫內資料填入excel的cells中, 在站上有搜尋到一些文章,但不是使用delphi語法,就是不符合我的需求。 所以想請教一下如何coding,或是提供一點資料文件讓我參考一下, 我使用的是BCB6,Win2000環境及 Excel 2000,以下是我想做的程式輸出: (1)開啟一個excel檔並命名之(例:Tc1output.xls) (2)增加四個sheets,並且個自命名(例:test1、test2、test3、test4) (3)在第一個sheet的cells內填入資料庫的數據(這個步驟參考站上文章我已學會) (4)跳到第二個sheet,開始寫入數據資料 (5)依序把第三個sheet、第四個sheet填入資料 請各位高手提供方法及屬性,多謝~~感激不盡
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-10-24 18:10:34 IP:203.95.xxx.xxx 未訂閱
請參考: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=34385 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=21190
qaeroman
一般會員


發表:6
回覆:6
積分:2
註冊:2003-06-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-10-26 15:52:39 IP:218.166.xxx.xxx 未訂閱
感謝timhuang的回應,可是好像還是沒解決(1)(4)(5)的問題, 根據timhuang提供的兩篇文章,我有以下的想法,請指教:    想法一: step1:開啟一個Excel檔並命名  (這個步驟我不會) step2:先Add一個test4的sheet,填入資料。 step3:依序Add,test3, test2,test1的sheets填入資料 step4:delete 一開啟Excel程式就內建的Seet1、Sheet2、Sheet3(這個步驟我不會)    想法二: step1:開啟一個Excel檔並命名  (這個步驟不會) step2:將Sheet1重新命名為test1,填入資料。 step3:將Sheet2設為Active,重新命名為test2,填入資料(如何將Sheet2設為Active不清楚) step4:將Sheet3設為Active,重新命名為test3,填入資料(如何將Sheet3設為Active不清楚) step5:Add一個test4的sheet,填入資料。    我對這個部分不熟,書上的資料寫的又很少,請前輩高手們不吝指教,謝謝!
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-10-27 10:01:08 IP:203.95.xxx.xxx 未訂閱
hi, 再寫的小範例給你參考:    
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  Variant ex, wb, ws, ch;
  ex = CreateOleObject("Excel.Application");
  wb = ex.OlePropertyGet("WorkBooks").OleFunction("Open", "C:\\1.xls");
  wb.OleFunction("SaveAs", "C:\\2.xls");    //解決問題(1)
  ex.OlePropertySet("Visible", true);
  wb.OlePropertyGet("WorkSheets", 2).OleFunction("Select"); //解決問題(4)(5)
}
要重新命名檔案可以在存檔的時候給定檔名即可, 如上面的 SaveAs, 要切換目前的 sheet 可以使用 Select 即可, 看你要切到那一頁就給定該 index 就行了!
wivern
初階會員


發表:31
回覆:63
積分:28
註冊:2002-07-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-10-27 17:28:16 IP:61.219.xxx.xxx 未訂閱
新增sheet:
Worksheet=Worksheets.OleFunction("Add"); // 新增一worksheet
Worksheet.OlePropertySet("Name","SheetName") ;//更改Sheet的名稱
將Sheet Active:
Worksheet=Worksheets.OlePropertyGet("Item",1);
or
Worksheet=Worksheets.OlePropertyGet("Item","SheetName");//先選擇Sheet,可用數字或是Sheet名稱
Worksheet.OleProcedure("Activate");
刪除sheet:
Worksheet=Worksheets.OlePropertyGet("Item","SheetName");
Worksheet.OleProcedure("Delete");
存檔:
Excel.OlePropertySet("DisplayAlerts", false);
Workbook.OleProcedure("SaveAs", file_name);
加入 Excel.OlePropertySet("DisplayAlerts", false); 這一行可以讓Excel不要出現警告視窗,像是如果要存的檔已經存在的話, 本來會出現一個警告視窗問是否要取代原來的檔, 加上這一行,就可以直接存檔,不管是否檔名有重覆~ 發表人 - wivern 於 2003/10/27 18:24:45
qaeroman
一般會員


發表:6
回覆:6
積分:2
註冊:2003-06-19

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-10-27 19:55:56 IP:218.166.xxx.xxx 未訂閱
哇~~~謝謝!謝謝!這個問題困擾我好幾天了, 感謝各位前輩的答覆~~~ timhuang先回答此問題,而且撥冗回應兩次, 所以這題應算timhuang得分~~wivern也非常謝謝你的回覆
系統時間:2024-11-25 15:35:47
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!