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

Delphi控制Excel2000操作全集

 
wnhoo
高階會員


發表:75
回覆:443
積分:198
註冊:2003-04-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-26 19:32:46 IP:61.155.xxx.xxx 未訂閱
Delphi控制Excel2000 希望這分資料,為論壇中的各位會員關於EXCEL操作的問題提供一些幫助。 同時也希望各位能將自己整理的、或已有的資料共享出來。 這樣可以減少大家的「重複勞動」嗎? 技術在於交流,經驗在於積累!!!! 一.使用動態創建的方法 首先創建 Excel 對象,使用ComObj: var ExcelApp: Variant; ExcelApp := CreateOleObject( 'Excel.Application' ); 1) 顯示當前窗口: ExcelApp.Visible := True; 2) 更改 Excel 標題欄: ExcelApp.Caption := '應用程序調用 Microsoft Excel'; 3) 添加新工作簿: ExcelApp.WorkBooks.Add; 4) 打開已存在的工作簿: ExcelApp.WorkBooks.Open( 'C:\Excel\Demo.xls' ); 5) 設置第2個工作表為活動工作表: ExcelApp.WorkSheets[2].Activate; 或 ExcelApp.WorksSheets[ 'Sheet2' ].Activate; 6) 給單元格賦值: ExcelApp.Cells[1,4].Value := '第一行第四列'; 7) 設置指定列的寬度(單位:字符個數),以第一列為例: ExcelApp.ActiveSheet.Columns[1].ColumnsWidth := 5; 8) 設置指定行的高度(單位:磅)(1磅=0.035厘米),以第二行為例: ExcelApp.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米 9) 在第8行之前插入分頁符: ExcelApp.WorkSheets[1].Rows[8].PageBreak := 1; 10) 在第8列之前刪除分頁符: ExcelApp.ActiveSheet.Columns[4].PageBreak := 0; 11) 指定邊框線寬度: ExcelApp.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3; 1-左 2-右 3-頂 4-底 5-斜( \ ) 6-斜( / ) 12) 清除第一行第四列單元格公式: ExcelApp.ActiveSheet.Cells[1,4].ClearContents; 13) 設置第一行字體屬性: ExcelApp.ActiveSheet.Rows[1].Font.Name := '隸書'; ExcelApp.ActiveSheet.Rows[1].Font.Color := clBlue; ExcelApp.ActiveSheet.Rows[1].Font.Bold := True; ExcelApp.ActiveSheet.Rows[1].Font.UnderLine := True; 14) 進行頁面設置: a.頁眉: ExcelApp.ActiveSheet.PageSetup.CenterHeader := '報表演示'; b.頁腳: ExcelApp.ActiveSheet.PageSetup.CenterFooter := '第&P頁'; c.頁眉到頂端邊距2cm: ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 2/0.035; d.頁腳到底端邊距3cm: ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 3/0.035; e.頂邊距2cm: ExcelApp.ActiveSheet.PageSetup.TopMargin := 2/0.035; f.底邊距2cm: ExcelApp.ActiveSheet.PageSetup.BottomMargin := 2/0.035; g.左邊距2cm: ExcelApp.ActiveSheet.PageSetup.LeftMargin := 2/0.035; h.右邊距2cm: ExcelApp.ActiveSheet.PageSetup.RightMargin := 2/0.035; i.頁面水平居中: ExcelApp.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035; j.頁面垂直居中: ExcelApp.ActiveSheet.PageSetup.CenterVertically := 2/0.035; k.打印單元格網線: ExcelApp.ActiveSheet.PageSetup.PrintGridLines := True; 15) 拷貝操作: a.拷貝整個工作表: ExcelApp.ActiveSheet.Used.Range.Copy; b.拷貝指定區域: ExcelApp.ActiveSheet.Range[ 'A1:E2' ].Copy; c.從A1位置開始粘貼: ExcelApp.ActiveSheet.Range.[ 'A1' ].PasteSpecial; d.從文件尾部開始粘貼: ExcelApp.ActiveSheet.Range.PasteSpecial; 16) 插入一行或一列: a. ExcelApp.ActiveSheet.Rows[2].Insert; b. ExcelApp.ActiveSheet.Columns[1].Insert; 17) 刪除一行或一列: a. ExcelApp.ActiveSheet.Rows[2].Delete; b. ExcelApp.ActiveSheet.Columns[1].Delete; 18) 打印預覽工作表: ExcelApp.ActiveSheet.PrintPreview; 19) 打印輸出工作表: ExcelApp.ActiveSheet.PrintOut; 20) 工作表保存: if not ExcelApp.ActiveWorkBook.Saved then ExcelApp.ActiveSheet.PrintPreview; 21) 工作表另存為: ExcelApp.SaveAs( 'C:\Excel\Demo1.xls' ); 22) 放棄存盤: ExcelApp.ActiveWorkBook.Saved := True; 23) 關閉工作簿: ExcelApp.WorkBooks.Close; 24) 退出 Excel: ExcelApp.Quit; 二.使用Delphi 控件方法 在Form中分別放入ExcelApplication, ExcelWorkbook和ExcelWorksheet。 1) 打開Excel ExcelApplication1.Connect; 2) 顯示當前窗口: ExcelApplication1.Visible[0]:=True; 3) 更改 Excel 標題欄: ExcelApplication1.Caption := '應用程序調用 Microsoft Excel'; 4) 添加新工作簿: ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0)); 5) 添加新工作表: var Temp_Worksheet: _WorkSheet; begin Temp_Worksheet:=ExcelWorkbook1. WorkSheets.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) as _WorkSheet; ExcelWorkSheet1.ConnectTo(Temp_WorkSheet); End; 6) 打開已存在的工作簿: ExcelApplication1.Workbooks.Open (c:\a.xls EmptyParam,EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) 7) 設置第2個工作表為活動工作表: ExcelApplication1.WorkSheets[2].Activate; 或 ExcelApplication1.WorksSheets[ 'Sheet2' ].Activate; 8) 給單元格賦值: ExcelApplication1.Cells[1,4].Value := '第一行第四列'; 9) 設置指定列的寬度(單位:字符個數),以第一列為例: ExcelApplication1.ActiveSheet.Columns[1].ColumnsWidth := 5; 10) 設置指定行的高度(單位:磅)(1磅=0.035厘米),以第二行為例: ExcelApplication1.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米 11) 在第8行之前插入分頁符: ExcelApplication1.WorkSheets[1].Rows[8].PageBreak := 1; 12) 在第8列之前刪除分頁符: ExcelApplication1.ActiveSheet.Columns[4].PageBreak := 0; 13) 指定邊框線寬度: ExcelApplication1.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3; 1-左 2-右 3-頂 4-底 5-斜( \ ) 6-斜( / ) 14) 清除第一行第四列單元格公式: ExcelApplication1.ActiveSheet.Cells[1,4].ClearContents; 15) 設置第一行字體屬性: ExcelApplication1.ActiveSheet.Rows[1].Font.Name := '隸書'; ExcelApplication1.ActiveSheet.Rows[1].Font.Color := clBlue; ExcelApplication1.ActiveSheet.Rows[1].Font.Bold := True; ExcelApplication1.ActiveSheet.Rows[1].Font.UnderLine := True; 16) 進行頁面設置: a.頁眉: ExcelApplication1.ActiveSheet.PageSetup.CenterHeader := '報表演示'; b.頁腳: ExcelApplication1.ActiveSheet.PageSetup.CenterFooter := '第&P頁'; c.頁眉到頂端邊距2cm: ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin := 2/0.035; d.頁腳到底端邊距3cm: ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin := 3/0.035; e.頂邊距2cm: ExcelApplication1.ActiveSheet.PageSetup.TopMargin := 2/0.035; f.底邊距2cm: ExcelApplication1.ActiveSheet.PageSetup.BottomMargin := 2/0.035; g.左邊距2cm: ExcelApplication1.ActiveSheet.PageSetup.LeftMargin := 2/0.035; h.右邊距2cm: ExcelApplication1.ActiveSheet.PageSetup.RightMargin := 2/0.035; i.頁面水平居中: ExcelApplication1.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035; j.頁面垂直居中: ExcelApplication1.ActiveSheet.PageSetup.CenterVertically := 2/0.035; k.打印單元格網線: ExcelApplication1.ActiveSheet.PageSetup.PrintGridLines := True; 17) 拷貝操作: a.拷貝整個工作表: ExcelApplication1.ActiveSheet.Used.Range.Copy; b.拷貝指定區域: ExcelApplication1.ActiveSheet.Range[ 'A1:E2' ].Copy; c.從A1位置開始粘貼: ExcelApplication1.ActiveSheet.Range.[ 'A1' ].PasteSpecial; d.從文件尾部開始粘貼: ExcelApplication1.ActiveSheet.Range.PasteSpecial; 18) 插入一行或一列: a. ExcelApplication1.ActiveSheet.Rows[2].Insert; b. ExcelApplication1.ActiveSheet.Columns[1].Insert; 19) 刪除一行或一列: a. ExcelApplication1.ActiveSheet.Rows[2].Delete; b. ExcelApplication1.ActiveSheet.Columns[1].Delete; 20) 打印預覽工作表: ExcelApplication1.ActiveSheet.PrintPreview; 21) 打印輸出工作表: ExcelApplication1.ActiveSheet.PrintOut; 22) 工作表保存: if not ExcelApplication1.ActiveWorkBook.Saved then ExcelApplication1.ActiveSheet.PrintPreview; 23) 工作表另存為: ExcelApplication1.SaveAs( 'C:\Excel\Demo1.xls' ); 24) 放棄存盤: ExcelApplication1.ActiveWorkBook.Saved := True; 25) 關閉工作簿: ExcelApplication1.WorkBooks.Close; 26) 退出 Excel: ExcelApplication1.Quit; ExcelApplication1.Disconnect; 三.使用Delphi控制Excle二維圖 在Form中分別放入ExcelApplication, ExcelWorkbook和ExcelWorksheet var asheet1,achart, range:variant; 1)選擇當第一個工作薄第一個工作表 asheet1:=ExcelApplication1.Workbooks[1].Worksheets[1]; 2)增加一個二維圖 achart:=asheet1.chartobjects.add(100,100,200,200); 3)選擇二維圖的形態 achart.chart.charttype:=4; 4)給二維圖賦值 series:=achart.chart.seriescollection; range:=sheet1!r2c3:r3c9; series.add(range,true); 5)加上二維圖的標題 achart.Chart.HasTitle:=True; achart.Chart.ChartTitle.Characters.Text:=』 Excle二維圖』 6) 我是這樣寫的: var i,j:integer; ii:string; begin ExcelApplication1.Visible[0]:=True; ExcelApplication1.Caption:='Excel Application'; try ExcelApplication1.Workbooks.Open(ExtractFilePath(paramstr(0)) '文件名.xls', null,null,null,null,null,null,null,null,null,null,null,null,0); //獲取當前路徑下的文件並且打開 except ExcelApplication1.Disconnect;//出現異常情況時關閉 ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);//ExcelWorkbook1與Eexcelapplication1建立連接 ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);//Excelworksheet1與Excelworkbook1建立連接 fr_jjfenxi.Label3.Caption:='ExcelWorksheet1.Cells.Item[3,1]'; //ExcelApplication1.WorkBooks1.Close; ExcelApplication1.Disconnect; ExcelApplication1.Quit; 但是label3卻不能顯示第三行,第一列中的數據。請各位指點!!! 附說明: 一) 使用動態創建的方法 首先創建 Excel 對象,使用ComObj: var ExcelApp: Variant; ExcelApp := CreateOleObject( 'Excel.Application' ); 1) 顯示當前窗口: ExcelApp.Visible := True; 2) 更改 Excel 標題欄: ExcelApp.Caption := '應用程序調用 Microsoft Excel'; 3) 添加新工作簿: ExcelApp.WorkBooks.Add; 4) 打開已存在的工作簿: ExcelApp.WorkBooks.Open( 'C:\Excel\Demo.xls' ); 5) 設置第2個工作表為活動工作表: ExcelApp.WorkSheets[2].Activate; 或 ExcelApp.WorksSheets[ 'Sheet2' ].Activate; 6) 給單元格賦值: ExcelApp.Cells[1,4].Value := '第一行第四列'; 7) 設置指定列的寬度(單位:字符個數),以第一列為例: ExcelApp.ActiveSheet.Columns[1].ColumnsWidth := 5; 8) 設置指定行的高度(單位:磅)(1磅=0.035厘米),以第二行為例: ExcelApp.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米 9) 在第8行之前插入分頁符: ExcelApp.WorkSheets[1].Rows.PageBreak := 1; 10) 在第8列之前刪除分頁符: ExcelApp.ActiveSheet.Columns[4].PageBreak := 0; 11) 指定邊框線寬度: ExcelApp.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3; 1-左 2-右 3-頂 4-底 5-斜( \ ) 6-斜( / ) 12) 清除第一行第四列單元格公式: ExcelApp.ActiveSheet.Cells[1,4].ClearContents; 13) 設置第一行字體屬性: ExcelApp.ActiveSheet.Rows[1].Font.Name := '隸書'; ExcelApp.ActiveSheet.Rows[1].Font.Color := clBlue; ExcelApp.ActiveSheet.Rows[1].Font.Bold := True; ExcelApp.ActiveSheet.Rows[1].Font.UnderLine := True; 14) 進行頁面設置: a.頁眉: ExcelApp.ActiveSheet.PageSetup.CenterHeader := '報表演示'; b.頁腳: ExcelApp.ActiveSheet.PageSetup.CenterFooter := '第&P頁'; c.頁眉到頂端邊距2cm: ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 2/0.035; d.頁腳到底端邊距3cm: ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 3/0.035; e.頂邊距2cm: ExcelApp.ActiveSheet.PageSetup.TopMargin := 2/0.035; f.底邊距2cm: ExcelApp.ActiveSheet.PageSetup.BottomMargin := 2/0.035; g.左邊距2cm: ExcelApp.ActiveSheet.PageSetup.LeftMargin := 2/0.035; h.右邊距2cm: ExcelApp.ActiveSheet.PageSetup.RightMargin := 2/0.035; i.頁面水平居中: ExcelApp.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035; j.頁面垂直居中: ExcelApp.ActiveSheet.PageSetup.CenterVertically := 2/0.035; k.打印單元格網線: ExcelApp.ActiveSheet.PageSetup.PrintGridLines := True; 15) 拷貝操作: a.拷貝整個工作表: ExcelApp.ActiveSheet.Used.Range.Copy; b.拷貝指定區域: ExcelApp.ActiveSheet.Range[ 'A1:E2' ].Copy; c.從A1位置開始粘貼: ExcelApp.ActiveSheet.Range.[ 'A1' ].PasteSpecial; d.從文件尾部開始粘貼: ExcelApp.ActiveSheet.Range.PasteSpecial; 16) 插入一行或一列: a. ExcelApp.ActiveSheet.Rows[2].Insert; b. ExcelApp.ActiveSheet.Columns[1].Insert; 17) 刪除一行或一列: a. ExcelApp.ActiveSheet.Rows[2].Delete; b. ExcelApp.ActiveSheet.Columns[1].Delete; 18) 打印預覽工作表: ExcelApp.ActiveSheet.PrintPreview; 19) 打印輸出工作表: ExcelApp.ActiveSheet.PrintOut; 20) 工作表保存: if not ExcelApp.ActiveWorkBook.Saved then ExcelApp.ActiveSheet.PrintPreview; 21) 工作表另存為: ExcelApp.SaveAs( 'C:\Excel\Demo1.xls' ); 22) 放棄存盤: ExcelApp.ActiveWorkBook.Saved := True; 23) 關閉工作簿: ExcelApp.WorkBooks.Close; 24) 退出 Excel: ExcelApp.Quit; (二) 使用Delphi 控件方法 在Form中分別放入ExcelApplication, ExcelWorkbook和ExcelWorksheet。 1) 打開Excel ExcelApplication1.Connect; 2) 顯示當前窗口: ExcelApplication1.Visible[0]:=True; 3) 更改 Excel 標題欄: ExcelApplication1.Caption := '應用程序調用 Microsoft Excel'; 4) 添加新工作簿: ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0)); 5) 添加新工作表: var Temp_Worksheet: _WorkSheet; begin Temp_Worksheet:=ExcelWorkbook1. WorkSheets.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) as _WorkSheet; ExcelWorkSheet1.ConnectTo(Temp_WorkSheet); End; 6) 打開已存在的工作簿: ExcelApplication1.Workbooks.Open (c:\a.xls EmptyParam,EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) 7) 設置第2個工作表為活動工作表: ExcelApplication1.WorkSheets[2].Activate; 或 ExcelApplication1.WorksSheets[ 'Sheet2' ].Activate; 8) 給單元格賦值: ExcelApplication1.Cells[1,4].Value := '第一行第四列'; 9) 設置指定列的寬度(單位:字符個數),以第一列為例: ExcelApplication1.ActiveSheet.Columns[1].ColumnsWidth := 5; 10) 設置指定行的高度(單位:磅)(1磅=0.035厘米),以第二行為例: ExcelApplication1.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米 11) 在第8行之前插入分頁符: ExcelApplication1.WorkSheets[1].Rows.PageBreak := 1; 12) 在第8列之前刪除分頁符: ExcelApplication1.ActiveSheet.Columns[4].PageBreak := 0; 13) 指定邊框線寬度: ExcelApplication1.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3; 1-左 2-右 3-頂 4-底 5-斜( \ ) 6-斜( / ) 14) 清除第一行第四列單元格公式: ExcelApplication1.ActiveSheet.Cells[1,4].ClearContents; 15) 設置第一行字體屬性: ExcelApplication1.ActiveSheet.Rows[1].Font.Name := '隸書'; ExcelApplication1.ActiveSheet.Rows[1].Font.Color := clBlue; ExcelApplication1.ActiveSheet.Rows[1].Font.Bold := True; ExcelApplication1.ActiveSheet.Rows[1].Font.UnderLine := True; 16) 進行頁面設置: a.頁眉: ExcelApplication1.ActiveSheet.PageSetup.CenterHeader := '報表演示'; b.頁腳: ExcelApplication1.ActiveSheet.PageSetup.CenterFooter := '第&P頁'; c.頁眉到頂端邊距2cm: ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin := 2/0.035; d.頁腳到底端邊距3cm: ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin := 3/0.035; e.頂邊距2cm: ExcelApplication1.ActiveSheet.PageSetup.TopMargin := 2/0.035; f.底邊距2cm: ExcelApplication1.ActiveSheet.PageSetup.BottomMargin := 2/0.035; g.左邊距2cm: ExcelApplication1.ActiveSheet.PageSetup.LeftMargin := 2/0.035; h.右邊距2cm: ExcelApplication1.ActiveSheet.PageSetup.RightMargin := 2/0.035; i.頁面水平居中: ExcelApplication1.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035; j.頁面垂直居中: ExcelApplication1.ActiveSheet.PageSetup.CenterVertically := 2/0.035; k.打印單元格網線: ExcelApplication1.ActiveSheet.PageSetup.PrintGridLines := True; 17) 拷貝操作: a.拷貝整個工作表: ExcelApplication1.ActiveSheet.Used.Range.Copy; b.拷貝指定區域: ExcelApplication1.ActiveSheet.Range[ 'A1:E2' ].Copy; c.從A1位置開始粘貼: ExcelApplication1.ActiveSheet.Range.[ 'A1' ].PasteSpecial; d.從文件尾部開始粘貼: ExcelApplication1.ActiveSheet.Range.PasteSpecial; 18) 插入一行或一列: a. ExcelApplication1.ActiveSheet.Rows[2].Insert; b. ExcelApplication1.ActiveSheet.Columns[1].Insert; 19) 刪除一行或一列: a. ExcelApplication1.ActiveSheet.Rows[2].Delete; b. ExcelApplication1.ActiveSheet.Columns[1].Delete; 20) 打印預覽工作表: ExcelApplication1.ActiveSheet.PrintPreview; 21) 打印輸出工作表: ExcelApplication1.ActiveSheet.PrintOut; 22) 工作表保存: if not ExcelApplication1.ActiveWorkBook.Saved then ExcelApplication1.ActiveSheet.PrintPreview; 23) 工作表另存為: ExcelApplication1.SaveAs( 'C:\Excel\Demo1.xls' ); 24) 放棄存盤: ExcelApplication1.ActiveWorkBook.Saved := True; 25) 關閉工作簿: ExcelApplication1.WorkBooks.Close; 26) 退出 Excel: ExcelApplication1.Quit; ExcelApplication1.Disconnect; (三) 使用Delphi 控制Excle二維圖 在Form中分別放入ExcelApplication, ExcelWorkbook和ExcelWorksheet var asheet1,achart, range:variant; 1)選擇當第一個工作薄第一個工作表 asheet1:=ExcelApplication1.Workbooks[1].Worksheets[1]; 2)增加一個二維圖 achart:=asheet1.chartobjects.add(100,100,200,200); 3)選擇二維圖的形態 achart.chart.charttype:=4; 4)給二維圖賦值 series:=achart.chart.seriescollection; range:=sheet1!r2c3:r3c9; series.add(range,true); 5)加上二維圖的標題 achart.Chart.HasTitle:=True; achart.Chart.ChartTitle.Characters.Text:=』 Excle二維圖』 風花雪月 e夢情緣
------
风花雪月 e梦情缘
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-04-26 21:36:17 IP:61.227.xxx.xxx 未訂閱
謝謝長官的完整資料 如果有 Word 的操作全集,那就更完美了.... 小弟的構想是,想把 Word 當報表樣本 (report sample) 製作一個設計好的"空的"報表檔(*.doc , 只有 default format) 再由程式將資料塞到這個報表檔中成為一個完整的報表 所以要知道如何由程式去控制 word .... 可直接列印,也可 email 給別人 一般如 quick report 的報表缺點就是 不能把 report result email 給別人 ..... 我想這個需求應該很多人都用得上 發表人 - bruce0211 於 2003/04/26 21:41:30
GaryKao99
中階會員


發表:46
回覆:102
積分:54
註冊:2002-08-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-04-28 12:03:33 IP:218.32.xxx.xxx 未訂閱
小弟認為Word能做的Excel也可以做呦 而且Excel還能做更多的處理 還可以動態產生一個表格, 不輸Wordㄛ ps:可能小弟還沒實作過Word部分的程式,在此僅發表一些小意見
sailorjoye
一般會員


發表:11
回覆:18
積分:5
註冊:2003-05-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-16 12:02:09 IP:61.190.xxx.xxx 未訂閱
我投wnhoo先进的赞同票…… 凤翅天翔无比彷徨^&^~!
------
凤翅天翔,

无比彷徨!
kahocg
一般會員


發表:3
回覆:6
積分:1
註冊:2003-05-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-17 13:00:38 IP:210.3.xxx.xxx 未訂閱
看到wnhoo兄關於Delphi控制的文章真是如獲至寶,如果早一點拜讀此文,便可省去不少在網上找尋的時間了! 文中論及頁面設置方面,小弟有一疑問,望各方先進能不憫賜教。 如何在頁眉中設定指定區域? ExcelApplication1.ActiveSheet.PageSetUp.Range := 'A1:M3'; ??? 謝謝!
mcho
初階會員


發表:57
回覆:106
積分:42
註冊:2002-11-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-08-15 11:45:12 IP:61.224.xxx.xxx 未訂閱
wnhoo兄: 我也一個問題請教!設置指定列的寬度: ExcelApp.ActiveSheet.Columns[1].ColumnsWidth := 20 出現錯誤訊息:Method"ColumnsWidth not supported by automation object 應該如何設定:olumnsWidth 何明昌
------
何明昌
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-02-03 16:41:32 IP:210.65.xxx.xxx 未訂閱
Hi:    kahocg,你可使使用下列程式來控制列印標題列與標題欄
with (ExcelApplication1.ActiveSheet AS _WorkSheet).PageSetup do
    begin
        PrintTitleRows := '$1:$1';
        PrintTitleColumns := '';
    end;
-------------------------------- 小弟才疏學淺,若有謬誤請不吝指教 --------------------------------
------
Fishman
alanfujitsu
一般會員


發表:5
回覆:9
積分:2
註冊:2004-02-03

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-02-04 17:10:01 IP:211.21.xxx.xxx 未訂閱
現在剛好要開發..Excel 的統計報表..真是天大的幫助
aj0724
一般會員


發表:11
回覆:41
積分:10
註冊:2003-04-18

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-04-15 10:28:25 IP:211.23.xxx.xxx 未訂閱
引言: wnhoo兄: 我也一個問題請教!設置指定列的寬度: ExcelApp.ActiveSheet.Columns[1].ColumnsWidth := 20 出現錯誤訊息:Method"ColumnsWidth not supported by automation object 應該如何設定:ColumnsWidth 何明昌
我也遇到一樣的問題... 不曉得哪個大大可指導? 謝謝!
cykuo
一般會員


發表:5
回覆:10
積分:3
註冊:2003-04-03

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-04-15 11:23:10 IP:211.21.xxx.xxx 未訂閱
想請教一下 一般像此篇介紹的方式 都是控制開啟後的 EXECL 視窗 請問 能不能夠 把 EXECL 的畫面 或是類似的畫面 崁入至 DELPHI 的FORM中呢 不吝賜教 謝謝
aj0724
一般會員


發表:11
回覆:41
積分:10
註冊:2003-04-18

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-04-15 13:55:53 IP:61.59.xxx.xxx 未訂閱
引言: 想請教一下 一般像此篇介紹的方式 都是控制開啟後的 EXECL 視窗 請問 能不能夠 把 EXECL 的畫面 或是類似的畫面 崁入至 DELPHI 的FORM中呢 不吝賜教 謝謝
我想是不行的,因為要用到EXCEL的所有功能在delphil是很難達到的,所以只能就用到開啟EXCEL,並把資料過去處理才能達到相同的作用。
TTS
初階會員


發表:72
回覆:66
積分:27
註冊:2003-05-06

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-05-22 11:29:39 IP:218.26.xxx.xxx 未訂閱
那怎麼將資料給excel元件 且要存為何種格式 *.dbf可以嗎
sryang
尊榮會員


發表:39
回覆:762
積分:920
註冊:2002-06-27

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-05-25 13:19:22 IP:211.20.xxx.xxx 未訂閱
引言: 想請教一下 一般像此篇介紹的方式 都是控制開啟後的 EXECL 視窗 請問 能不能夠 把 EXECL 的畫面 或是類似的畫面 崁入至 DELPHI 的FORM中呢 不吝賜教 謝謝
試試 TOleContainer 吧 加油喔,喵~
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
u86210779
一般會員


發表:16
回覆:41
積分:16
註冊:2004-06-08

發送簡訊給我
#14 引用回覆 回覆 發表時間:2004-06-16 23:19:16 IP:218.165.xxx.xxx 未訂閱
引言: 謝謝長官的完整資料 如果有 Word 的操作全集,那就更完美了.... 小弟的構想是,想把 Word 當報表樣本 (report sample) 製作一個設計好的"空的"報表檔(*.doc , 只有 default format) 再由程式將資料塞到這個報表檔中成為一個完整的報表 所以要知道如何由程式去控制 word .... 可直接列印,也可 email 給別人 一般如 quick report 的報表缺點就是 不能把 report result email 給別人 ..... 我想這個需求應該很多人都用得上 發表人 - bruce0211 於 2003/04/26 21:41:30
版主你好 僅將本人所知如何 email 方式寫出來, 供大家參考
var SMTP : Varcant;
begin
  SMTP := CreateOleObject('CDONTS.NewMail');
  while not 客戶資料表.eof do begin
    SMTP.from := '寄件人 email';
    SMTP.to := '收件人 email';
    SMTP.cc := '副本 emai';
    SMTP.Subject := '主題';
    SMTP.Body := '信件內容';
    SMTP.Send;
    客戶資料表.next;
  end;
  SMTP.close;
end;
文章的出處我已經忘了, 至於是否有所遺漏也不太記得(應該不會). 對了 好像要 use ComObj 年紀大了, 請大家多多包含
avalokita
一般會員


發表:29
回覆:35
積分:12
註冊:2003-09-02

發送簡訊給我
#15 引用回覆 回覆 發表時間:2004-09-22 14:06:24 IP:211.74.xxx.xxx 未訂閱
7) 設置指定列的寬度(單位:字符個數),以第一列為例: ExcelApp.ActiveSheet.Columns[1].ColumnsWidth := 5;    程式執行這一行時,得到如下的結果。 請問有誰可指點的嗎?    Project project1.exe raise exception class EOleError with message Method 'Columnwidth' not supported  automation object.'Process stopped.Use Stop or Run To Continue.     
sega_l
一般會員


發表:0
回覆:1
積分:0
註冊:2004-08-09

發送簡訊給我
#16 引用回覆 回覆 發表時間:2004-10-08 10:55:26 IP:211.75.xxx.xxx 未訂閱
ExcelApp.ActiveSheet.Columns[1].ColumnsWidth := 5; 多了一個sㄡ
BELLDANDE
一般會員


發表:0
回覆:2
積分:0
註冊:2003-07-29

發送簡訊給我
#17 引用回覆 回覆 發表時間:2004-10-19 13:04:41 IP:211.78.xxx.xxx 未訂閱
我是這樣寫的ㄟ,可以過也可以指定欄寬,不知道對各位有沒有幫助 xla:=coapplication_.create ; .....略.... sheet := xla.workbooks[1].worksheets[1] ; sheet.Range[A1].ColumnWidth =20
nivanar
一般會員


發表:0
回覆:1
積分:0
註冊:2004-08-02

發送簡訊給我
#18 引用回覆 回覆 發表時間:2004-11-09 19:18:54 IP:202.3.xxx.xxx 未訂閱
不知道有沒有人用delphi呼叫excel的增益集裡面的規劃求解? 我試過很多方式好像都呼叫不到,可是excel的巨集又錄的到 真是怪
pristen
一般會員


發表:15
回覆:10
積分:5
註冊:2002-05-27

發送簡訊給我
#19 引用回覆 回覆 發表時間:2005-10-27 16:55:47 IP:211.22.xxx.xxx 未訂閱
var eclApp:Variant; eclApp:=CreateOleObject('Excel.Application'); eclApp.activesheet.range['A1'].ColumnWidth:= 11; //設定EXCEL欄寬 以上是我測試的結果,這樣就不會錯了
nicolas
一般會員


發表:39
回覆:40
積分:15
註冊:2004-05-05

發送簡訊給我
#20 引用回覆 回覆 發表時間:2005-12-01 09:57:55 IP:61.219.xxx.xxx 未訂閱
另存新檔  Excel.SaveAs('C:\Demo1.xls' ); 沒問題嗎?
JLATSTAR
一般會員


發表:8
回覆:16
積分:4
註冊:2007-05-08

發送簡訊給我
#21 引用回覆 回覆 發表時間:2007-07-25 14:42:46 IP:203.204.xxx.xxx 訂閱
我在下 ExcelApp.WorksSheets[ 'Sheet2' ].Activate; 出現
Method 'WorksSheets' not supported by automation object

請問是什麼原因,要如何處理?

wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#22 引用回覆 回覆 發表時間:2007-07-25 20:09:10 IP:61.222.xxx.xxx 訂閱
別人已答錄。....
善用 Servers 元件頁,比較不會弄錯名稱。

===================引 用 BELLDANDE 文 章===================
我是這樣寫的,可以過也可以指定欄寬,不知道對各位有沒有幫助
; .....略....
sheet := xla.workbooks[1].worksheets[1] ;
sheet.Range[A1].ColumnWidth =20
17kobe
初階會員


發表:86
回覆:73
積分:31
註冊:2007-07-30

發送簡訊給我
#23 引用回覆 回覆 發表時間:2007-08-24 17:41:12 IP:210.68.xxx.xxx 訂閱
請問delphi操作excel的話,一定要有灌excel嗎,可以不灌就直接讀或寫嗎。
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#24 引用回覆 回覆 發表時間:2007-08-24 20:48:18 IP:219.68.xxx.xxx 未訂閱
請另開一篇討論區, 還有善用搜尋(其他幾位問題亦如是)
yching
一般會員


發表:6
回覆:22
積分:10
註冊:2007-03-23

發送簡訊給我
#25 引用回覆 回覆 發表時間:2008-02-18 10:39:44 IP:61.222.xxx.xxx 訂閱
大大...

我要在每個分頁加上數行標題&頁碼,
因標題字數超過255,無法放在頁首裡面!
使用共用標題列的話...頁碼計算又是一個問題...

所以寫了一段程式,改insert 在分頁符後面並計算頁碼,
但又發現一個問題..下面這段程式 i=1 時 r有值,但i>1之後就出現exeption,
您是否有遇過相同問題呢?有辦法解決嗎?
[exeption]
Project Test.exe raised exeption class EOle Excption with message '無效的索引'. Process stopped. Use Step or Run to Cotinue.
編輯記錄
yching 重新編輯於 2008-02-18 12:08:07, 註解 無‧
系統時間:2024-04-27 19:39:26
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!