1.     Delphi控制Excel2000  希望這分資料,為論壇中的各位會員關於EXCEL操作的問題提供一些幫助。  
  2. 同時也希望各位能將自己整理的、或已有的資料共享出來。  
  3. 這樣可以減少大家的「重複勞動」嗎? 技術在於交流,經驗在於積累!!!!  
  4.   
  5. 一.使用動態創建的方法 首先創建 Excel 對象,使用ComObj:  
  6.     var ExcelApp: Variant;  
  7.     ExcelApp := CreateOleObject('Excel.Application');  
  8. 1) 顯示當前窗口:  
  9.     ExcelApp.Visible := True;  
  10. 2) 更改 Excel 標題欄:  
  11.     ExcelApp.Caption := '應用程序調用 Microsoft Excel';  
  12. 3) 添加新工作簿:  
  13.     ExcelApp.WorkBooks.Add;  
  14. 4) 打開已存在的工作簿:  
  15.     ExcelApp.WorkBooks.Open('C:\Excel\Demo.xls');  
  16. 5) 設置第2個工作表為活動工作表:  
  17.     ExcelApp.WorkSheets[2].Activate; 或  
  18.     ExcelApp.WorksSheets['Sheet2'].Activate;  
  19. 6) 給單元格賦值:  
  20.     ExcelApp.Cells[1,4].Value := '第一行第四列';  
  21. 7) 設置指定列的寬度(單位:字符個數),以第一列為例:  
  22.     ExcelApp.ActiveSheet.Columns[1].ColumnWidth := 5;  
  23. 8) 設置指定行的高度(單位:磅)(1磅=0.035釐米),以第二行為例:  
  24.     ExcelApp.ActiveSheet.Rows[2].RowHeight := 1/0.035// 1釐米  
  25. 9) 在第8行之前插入分頁符:  
  26.     ExcelApp.WorkSheets[1].Rows[8].PageBreak := 1;  
  27. 10) 在第8列之前刪除分頁符:  
  28.     ExcelApp.ActiveSheet.Columns[4].PageBreak := 0;  
  29. 11) 指定邊框線寬度:  
  30.     ExcelApp.ActiveSheet.Range['B3:D4'].Borders[2].Weight := 31-左 2-右 3-頂 4-底 5-斜( \ ) 6-斜( / )  
  31.     11-1 指定邊框的style (1:實線, 2:虛線)  
  32.     ExcelApp.Selection.Borders[1].LineStyle := 1;  
  33.     11-2 指定邊框的 Weight (1~4)  
  34.     ExcelApp.Selection.Borders[1].Weight := 3;  
  35.     11-3 指定邊框的 ColorIndex (0~56)  
  36.     ExcelApp.Selection.Borders[1].ColorIndex := 1;  
  37.         (1:黑色, 2:白色, 3:紅色, 4:綠色, 5:藍色, 6:黃色, 7:紫色, 8:青藍色, 9:棕色…)  
  38. 12) 清除第一行第四列單元格公式:  
  39.     ExcelApp.ActiveSheet.Cells[1,4].ClearContents;  
  40. 13) 設置第一行字體屬性:  
  41.     ExcelApp.ActiveSheet.Rows[1].Font.Name := '隸書'; ExcelApp.ActiveSheet.Rows[1].Font.Color := clBlue;  
  42.     ExcelApp.ActiveSheet.Rows[1].Font.Bold := True; ExcelApp.ActiveSheet.Rows[1].Font.UnderLine := True;  
  43.     //將儲存格改成文字格式  
  44.     ExcelApp.ActiveSheet.Rows[1].Font.Size:= 12; ExcelApp.ActiveSheet.Rows[1].NumberFormatLocal:='@';  
  45.     //將儲存格改成文字格式  
  46.     ExcelApp.Selection.NumberFormatLocal:='@';  
  47.       
  48. 13-1) 合併儲存格:  
  49.     ExcelApp.ActiveSheet.Range['A1:C3'].Merge;  
  50. 13-2) 跨欄置中:  
  51.     ExcelApp.ActiveSheet.Range['A1','V1'].HorizontalAlignment := $FFFFEFF4;  
  52.     ExcelApp.ActiveSheet.Range['A1','V1'].VerticalAlignment := $FFFFEFF4;  
  53. 13-3) 設定顏色  
  54.     // color orange ExcelApp.ActiveSheet.Range['A2:V2'].Interior.Color:=clLime;  
  55.     ExcelApp.ActiveSheet.Range['A1:V1'].Interior.Color:=33023;  
  56.     // color green  13-3 凍結 ExcelApp.ActiveSheet.Cells[3,3].Select;  
  57.     ExcelApp.ActiveWindow.FreezePanes := True;  
  58. 13-4) 設定百分比格式  
  59.     ExcelApp.ActiveSheet.Range['H13'].NumberFormatLocal:='0.00%';  
  60. 14) 進行頁面設置:  a.頁眉:  
  61.     ExcelApp.ActiveSheet.PageSetup.CenterHeader := '報表演示'; b.頁腳:  
  62.     ExcelApp.ActiveSheet.PageSetup.CenterFooter := '第&P頁'; c.頁眉到頂端邊距2cm:  
  63.     ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 2/0.035; d.頁腳到底端邊距3cm:  
  64.     ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 3/0.035; e.頂邊距2cm:  
  65.     ExcelApp.ActiveSheet.PageSetup.TopMargin := 2/0.035; f.底邊距2cm:  
  66.     ExcelApp.ActiveSheet.PageSetup.BottomMargin := 2/0.035; g.左邊距2cm:  
  67.     ExcelApp.ActiveSheet.PageSetup.LeftMargin := 2/0.035; h.右邊距2cm:  
  68.     ExcelApp.ActiveSheet.PageSetup.RightMargin := 2/0.035; i.頁面水平居中:  
  69.     ExcelApp.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035; j.頁面垂直居中:  
  70.     ExcelApp.ActiveSheet.PageSetup.CenterVertically := 2/0.035; k.打印單元格網線:  
  71.     ExcelApp.ActiveSheet.PageSetup.PrintGridLines := True;  
  72. 15) 拷貝操作:  
  73.     a.拷貝整個工作表:  
  74.         ExcelApp.ActiveSheet.Used.Range.Copy;  
  75.     b.拷貝指定區域:  
  76.         ExcelApp.ActiveSheet.Range[ 'A1:E2' ].Copy;  
  77.     c.從A1位置開始粘貼:  
  78.         ExcelApp.ActiveSheet.Range.[ 'A1' ].PasteSpecial;  
  79.     d.從文件尾部開始粘貼:  
  80.         ExcelApp.ActiveSheet.Range.PasteSpecial;  
  81. 16) 插入一行或一列:  
  82.         a. ExcelApp.ActiveSheet.Rows[2].Insert;  
  83.         b. ExcelApp.ActiveSheet.Columns[1].Insert;  
  84. 17) 刪除一行或一列:  
  85.         a. ExcelApp.ActiveSheet.Rows[2].Delete;  
  86.         b. ExcelApp.ActiveSheet.Columns[1].Delete;  
  87. 18) 打印預覽工作表:  
  88.     ExcelApp.ActiveSheet.PrintPreview;  
  89. 19) 打印輸出工作表:  
  90.     ExcelApp.ActiveSheet.PrintOut;  
  91. 20) 工作表保存:  
  92.     if not ExcelApp.ActiveWorkBook.Saved then ExcelApp.ActiveSheet.PrintPreview;  
  93.   
  94. 20-1) 儲存時不提示  
  95.     ExcelApp.Application.DisplayAlerts := False;  
  96.   
  97. 21) 工作表另存為:  
  98.     ExcelApp.SaveAs( 'C:\Excel\Demo1.xls' );  
  99. 22) 放棄存盤:  
  100.     ExcelApp.ActiveWorkBook.Saved := True;  
  101. 23) 關閉工作簿:  
  102.     ExcelApp.WorkBooks.Close;  
  103. 24) 退出 Excel:  
  104.     ExcelApp.Quit;      
  105.   
  106. 二.使用Delphi 控件方法  
  107.     在Form中分別放入ExcelApplication, ExcelWorkbook和ExcelWorksheet。  
  108. 1) 打開Excel  
  109.     ExcelApplication1.Connect;  
  110. 2) 顯示當前窗口:  
  111.     ExcelApplication1.Visible[0]:=True;  
  112. 3) 更改 Excel 標題欄:  
  113.     ExcelApplication1.Caption := '應用程序調用 Microsoft Excel';  
  114. 4) 添加新工作簿:  
  115.     ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0));  
  116. 5) 添加新工作表:  
  117.     var Temp_Worksheet: _WorkSheet;  
  118.     begin  
  119.         Temp_Worksheet:=ExcelWorkbook1.  
  120.         WorkSheets.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,0as _WorkSheet;  
  121.         ExcelWorkSheet1.ConnectTo(Temp_WorkSheet);  
  122.     End;  
  123. 6) 打開已存在的工作簿:  
  124.     ExcelApplication1.Workbooks.Open (c:\a.xls EmptyParam,EmptyParam,EmptyParam,EmptyParam,  
  125.         EmptyParam,EmptyParam,EmptyParam,EmptyParam, EmptyParam,EmptyParam,EmptyParam,EmptyParam,0)  
  126. 7) 設置第2個工作表為活動工作表:  
  127.     ExcelApplication1.WorkSheets[2].Activate;  
  128.     或  
  129.     ExcelApplication1.WorksSheets['Sheet2'].Activate;  
  130. 8) 給單元格賦值:  
  131.     ExcelApplication1.Cells[1,4].Value := '第一行第四列';  
  132. 9) 設置指定列的寬度(單位:字符個數),以第一列為例:  
  133.     ExcelApplication1.ActiveSheet.Columns[1].ColumnsWidth := 5;  
  134. 10) 設置指定行的高度(單位:磅)(1磅=0.035釐米),以第二行為例:  
  135.     ExcelApplication1.ActiveSheet.Rows[2].RowHeight := 1/0.035// 1釐米  
  136. 11) 在第8行之前插入分頁符:  
  137.     ExcelApplication1.WorkSheets[1].Rows[8].PageBreak := 1;  
  138. 12) 在第8列之前刪除分頁符:  
  139.     ExcelApplication1.ActiveSheet.Columns[4].PageBreak := 0;  
  140. 13) 指定邊框線寬度:  
  141.     ExcelApplication1.ActiveSheet.Range['B3:D4'].Borders[2].Weight :=  
  142.         31-左 2-右 3-頂 4-底 5-斜( \ ) 6-斜( / )  
  143. 14) 清除第一行第四列單元格公式:  
  144.     ExcelApplication1.ActiveSheet.Cells[1,4].ClearContents;  
  145. 15) 設置第一行字體屬性:  
  146.     ExcelApplication1.ActiveSheet.Rows[1].Font.Name := '隸書';  
  147.     ExcelApplication1.ActiveSheet.Rows[1].Font.Color := clBlue;  
  148.     ExcelApplication1.ActiveSheet.Rows[1].Font.Bold := True;  
  149.     ExcelApplication1.ActiveSheet.Rows[1].Font.UnderLine := True;  
  150. 16) 進行頁面設置:  
  151.     a.頁眉:  
  152.         ExcelApplication1.ActiveSheet.PageSetup.CenterHeader := '報表演示';  
  153.     b.頁腳:  
  154.         ExcelApplication1.ActiveSheet.PageSetup.CenterFooter := '第&P頁';  
  155.     c.頁眉到頂端邊距2cm:  
  156.         ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin := 2/0.035;  
  157.     d.頁腳到底端邊距3cm:  
  158.         ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin := 3/0.035;  
  159.     e.頂邊距2cm:  
  160.         ExcelApplication1.ActiveSheet.PageSetup.TopMargin := 2/0.035;  
  161.     f.底邊距2cm:  
  162.         ExcelApplication1.ActiveSheet.PageSetup.BottomMargin := 2/0.035;  
  163.     g.左邊距2cm:  
  164.         ExcelApplication1.ActiveSheet.PageSetup.LeftMargin := 2/0.035;  
  165.     h.右邊距2cm:  
  166.         ExcelApplication1.ActiveSheet.PageSetup.RightMargin := 2/0.035;  
  167.     i.頁面水平居中:  
  168.         ExcelApplication1.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035;  
  169.     j.頁面垂直居中:  
  170.         ExcelApplication1.ActiveSheet.PageSetup.CenterVertically := 2/0.035;  
  171.     k.打印單元格網線:  
  172.         ExcelApplication1.ActiveSheet.PageSetup.PrintGridLines := True;  
  173. 17) 拷貝操作:  
  174.     a.拷貝整個工作表:  
  175.         ExcelApplication1.ActiveSheet.Used.Range.Copy;  
  176.     b.拷貝指定區域:  
  177.     ExcelApplication1.ActiveSheet.Range['A1:E2'].Copy;  
  178.     c.從A1位置開始粘貼:  
  179.     ExcelApplication1.ActiveSheet.Range.['A1'].PasteSpecial;  
  180.     d.從文件尾部開始粘貼:  
  181.     ExcelApplication1.ActiveSheet.Range.PasteSpecial;  
  182. 18) 插入一行或一列:  
  183.     a. ExcelApplication1.ActiveSheet.Rows[2].Insert;  
  184.     b. ExcelApplication1.ActiveSheet.Columns[1].Insert;  
  185. 19) 刪除一行或一列:  
  186.     a. ExcelApplication1.ActiveSheet.Rows[2].Delete;  
  187.     b. ExcelApplication1.ActiveSheet.Columns[1].Delete;  
  188. 20) 打印預覽工作表:  
  189.     ExcelApplication1.ActiveSheet.PrintPreview;  
  190. 21) 打印輸出工作表:  
  191.     ExcelApplication1.ActiveSheet.PrintOut;  
  192. 22) 工作表保存:  
  193.     if not ExcelApplication1.ActiveWorkBook.Saved then ExcelApplication1.ActiveSheet.PrintPreview;  
  194. 23) 工作表另存為:  
  195.     ExcelApplication1.SaveAs('C:\Excel\Demo1.xls');  
  196. 24) 放棄存盤:  
  197.     ExcelApplication1.ActiveWorkBook.Saved := True;  
  198. 25) 關閉工作簿:  
  199.     ExcelApplication1.WorkBooks.Close;  
  200. 26) 退出 Excel:  
  201.     ExcelApplication1.Quit; ExcelApplication1.Disconnect;  
  202.   
  203. 三.使用Delphi控制Excle二維圖  
  204.   
  205. 在Form中分別放入ExcelApplication, ExcelWorkbook和ExcelWorksheet var asheet1,achart, range:variant;  
  206. 1)選擇當第一個工作薄第一個工作表  
  207.     asheet1:=ExcelApplication1.Workbooks[1].Worksheets[1];  
  208. 2)增加一個二維圖  
  209.     achart:=asheet1.chartobjects.add(100,100,200,200);  
  210. 3)選擇二維圖的形態  
  211.     achart.chart.charttype:=4;  
  212. 4)給二維圖賦值  
  213.     series:=achart.chart.seriescollection;  
  214.     range:=sheet1!r2c3:r3c9; series.add(range,true);  
  215. 5)加上二維圖的標題  
  216.     achart.Chart.HasTitle:=True; achart.Chart.ChartTitle.Characters.Text:=』 Excle二維圖』
arrow
arrow
    全站熱搜

    giga0066 發表在 痞客邦 留言(0) 人氣()