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

抓到的 Delphi 操作 Excel 的參考文件 (加補充)

 
alvin26
初階會員


發表:24
回覆:41
積分:28
註冊:2005-04-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-04-25 18:20:01 IP:219.87.xxx.xxx 訂閱

=================================================

下面這一份用 Delphi 操作 Excel 的文件,我忘了在哪抓的了,

因為公司要做個小功能匯出 Excel 而抓的,

我還補充了一小部份,給各位做參考~

=================================================

[code delphi]
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].ColumnWidth := 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-斜( / )
11-1 指定邊框的style (1:實線, 2:虛線)
ExcelApp.Selection.Borders[1].LineStyle := 1;
11-2 指定邊框的 Weight (1~4)
ExcelApp.Selection.Borders[1].Weight := 3;
11-3 指定邊框的 ColorIndex (0~56)
ExcelApp.Selection.Borders[1].ColorIndex := 1;
(1:黑色, 2:白色, 3:紅色, 4:綠色, 5:藍色, 6:黃色, 7:紫色, 8:青藍色, 9:棕色…)
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;
//將儲存格改成文字格式
ExcelApp.ActiveSheet.Rows[1].Font.Size:= 12; ExcelApp.ActiveSheet.Rows[1].NumberFormatLocal:='@';
//將儲存格改成文字格式
ExcelApp.Selection.NumberFormatLocal:='@';

13-1) 合併儲存格:
ExcelApp.ActiveSheet.Range['A1:C3'].Merge;
13-2) 跨欄置中:
ExcelApp.ActiveSheet.Range['A1','V1'].HorizontalAlignment := $FFFFEFF4;
ExcelApp.ActiveSheet.Range['A1','V1'].VerticalAlignment := $FFFFEFF4;
13-3) 設定顏色
// color orange ExcelApp.ActiveSheet.Range['A2:V2'].Interior.Color:=clLime;
ExcelApp.ActiveSheet.Range['A1:V1'].Interior.Color:=33023;
// color green 13-3 凍結 ExcelApp.ActiveSheet.Cells[3,3].Select;
ExcelApp.ActiveWindow.FreezePanes := True;
13-4) 設定百分比格式
ExcelApp.ActiveSheet.Range['H13'].NumberFormatLocal:='0.00%';
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;

20-1) 儲存時不提示
ExcelApp.Application.DisplayAlerts := False;

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二維圖』
[/code]
------
弟子規,聖人訓,首孝悌,次謹信,泛愛眾,而親仁,有餘力,則學文。
編輯記錄
taishyang 重新編輯於 2007-04-27 15:47:03, 註解 排版‧
alvin26 重新編輯於 2007-12-05 18:47:10, 註解 無‧
alvin26 重新編輯於 2007-12-05 18:48:32, 註解 補充‧
alvin26 重新編輯於 2007-12-05 19:40:56, 註解 補充‧
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-04-25 19:17:15 IP:211.22.xxx.xxx 未訂閱
文章全亂了!可不可以重新編排一下。
alvin26
初階會員


發表:24
回覆:41
積分:28
註冊:2005-04-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-04-27 12:48:21 IP:219.87.xxx.xxx 訂閱
各位網友真是不好意思,因為小弟很少發表,所以排版全亂了,
現在再post一次轉貼的文章~

=========================================================

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].ColumnWidth := 5;

8) 設置指定行的高度(單位:磅)(10.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-( / )

11-1 指定邊框的style (1:實線, 2:虛線)
ExcelApp.Selection.Borders[1].LineStyle := 1;

11-2 指定邊框的 Weight (1~4)
ExcelApp.Selection.Borders[1].Weight := 3;

11-3 指定邊框的 ColorIndex (0~56)
ExcelApp.Selection.Borders[1].ColorIndex := 1;
(1:黑色, 2:白色, 3:紅色, 4:綠色, 5:藍色, 6:黃色, 7:紫色, 8:青藍色, 9:棕色…)


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;
ExcelApp.ActiveSheet.Rows[1].Font.Size:= 12;
ExcelApp.ActiveSheet.Rows[1].NumberFormatLocal:='@';//將儲存格改成文字格式
ExcelApp.Selection.NumberFormatLocal:='@';//將儲存格改成文字格式

13-1) 合併儲存格:
ExcelApp.ActiveSheet.Range['A1:C3'].Merge;

13-2) 跨欄置中:
ExcelApp.ActiveSheet.Range['A1','V1'].HorizontalAlignment := $FFFFEFF4;
ExcelApp.ActiveSheet.Range['A1','V1'].VerticalAlignment := $FFFFEFF4;

13-3) 設定顏色
ExcelApp.ActiveSheet.Range['A1:V1'].Interior.Color:=33023; // color orange
ExcelApp.ActiveSheet.Range['A2:V2'].Interior.Color:=clLime; // color green

13-3 凍結
ExcelApp.ActiveSheet.Cells[3,3].Select;
ExcelApp.ActiveWindow.FreezePanes := True;

13-4 設定百分比格式
ExcelApp.ActiveSheet.Range['H13'].NumberFormatLocal:='0.00%';


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, ExcelWorkbookExcelWorksheet

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) 設置指定行的高度(單位:磅)(10.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, ExcelWorkbookExcelWorksheet
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]);//ExcelWorkbook1Eexcelapplication1建立連接
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);//Excelworksheet1Excelworkbook1建立連接

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) 設置指定行的高度(單位:磅)(10.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, ExcelWorkbookExcelWorksheet

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) 設置指定行的高度(單位:磅)(10.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, ExcelWorkbookExcelWorksheet
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二維圖』



------
弟子規,聖人訓,首孝悌,次謹信,泛愛眾,而親仁,有餘力,則學文。
alvin26
初階會員


發表:24
回覆:41
積分:28
註冊:2005-04-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-05-02 16:28:50 IP:219.87.xxx.xxx 訂閱
修正一下其中的 SaveAs 方法: 
ExcelApp.WorkBooks[1].SaveAs('d:\tmp\a.xls');

原來的方法是錯誤的!!
ExcelApp.SaveAs('d:\tmp\a.xls');
------
弟子規,聖人訓,首孝悌,次謹信,泛愛眾,而親仁,有餘力,則學文。
books
一般會員


發表:9
回覆:27
積分:7
註冊:2006-10-27

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-09-07 18:19:12 IP:58.252.xxx.xxx 未訂閱
procedure TForm2.Button2Click(Sender: TObject);
var
i: Integer;
BoxNo: String;
MsExcel, MsExcelWorkBook, MsExcelWorkSheet:Variant;
begin
if OpenDialog1.Execute then
begin
// 睲戈
Query1.Close ;
Query1.Sql.clear ;
Query1.Sql.add('delete from mytest');
Query1.ExecSql;

MsExcel:= CreateOleObject('Excel.Application'); //這句語句怎麼也通不過呢?請高手指教,開發工具為Delphi7 office2003
MsExcelWorkBook:= msExcel.Workbooks.Open(OpenDialog1.FileName);
MsExcelWorkSheet:= msExcel.Worksheets.Item[1];

Query1.Close ;
Query1.Sql.clear ;
Query1.Sql.add('select * from mytest');
Query1.Open;

for i := 3 to MsExcelWorkSheet.Rows.Count do
begin
BoxNo := MsExcelWorkSheet.Range[Chr(65) IntToStr(i)].Value;
if BoxNo <> '' then
begin
Query1.Append;
Query1.FieldByName('A01').AsFloat :=strtoFloat(BoxNo);
Query1.FieldByName('A02').AsFloat :=MsExcelWorkSheet.Range[Chr(67) IntToStr(i)].Value;
Query1.FieldByName('RecNo').AsInteger := i-2;
Query1.Post;
end
else
Break;
Application.ProcessMessages;
end;
MessageDlg('蹲戈ЧΘ!',mtInformation,[mbOk],0) ;
end;

alvin26
初階會員


發表:24
回覆:41
積分:28
註冊:2005-04-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-09-20 16:20:18 IP:61.63.xxx.xxx 訂閱
請問您有引用 ComObj 嗎?
這函式是定義在這個檔中的。


===================引 用 books 文 章===================
procedure TForm2.Button2Click(Sender: TObject);
var
i: Integer;
BoxNo: String;
MsExcel, MsExcelWorkBook, MsExcelWorkSheet:Variant;
begin
if OpenDialog1.Execute then
begin
// 睲戈
Query1.Close ;
Query1.Sql.clear ;
Query1.Sql.add('delete from mytest');
Query1.ExecSql;

MsExcel:= CreateOleObject('Excel.Application'); //這句語句怎麼也通不過呢?請高手指教,開發工具為Delphi7 office2003
MsExcelWorkBook:= msExcel.Workbooks.Open(OpenDialog1.FileName);
MsExcelWorkSheet:= msExcel.Worksheets.Item[1];

Query1.Close ;
Query1.Sql.clear ;
Query1.Sql.add('select * from mytest');
Query1.Open;

for i := 3 to MsExcelWorkSheet.Rows.Count do
begin
BoxNo := MsExcelWorkSheet.Range[Chr(65) IntToStr(i)].Value;
if BoxNo <> '' then
begin
Query1.Append;
Query1.FieldByName('A01').AsFloat :=strtoFloat(BoxNo);
Query1.FieldByName('A02').AsFloat :=MsExcelWorkSheet.Range[Chr(67) IntToStr(i)].Value;
Query1.FieldByName('RecNo').AsInteger := i-2;
Query1.Post;
end
else
Break;
Application.ProcessMessages;
end;
MessageDlg('蹲戈ЧΘ!',mtInformation,[mbOk],0) ;
end;

------
弟子規,聖人訓,首孝悌,次謹信,泛愛眾,而親仁,有餘力,則學文。
devildemon
一般會員


發表:2
回覆:1
積分:0
註冊:2009-12-19

發送簡訊給我
#7 引用回覆 回覆 發表時間:2010-04-12 21:06:18 IP:118.160.xxx.xxx 訂閱

alvin26你好:
ComObj 是貼在它

implementation

uses ComObj;

{$R *.dfm}


===================引 用 alvin26 文 章===================
請問您有引用 ComObj 嗎?
這函式是定義在這個檔中的。


===================引 用 books 文 章===================
procedure TForm2.Button2Click(Sender: TObject);
var
i: Integer;
BoxNo: String;
MsExcel, MsExcelWorkBook, MsExcelWorkSheet:Variant;
begin
if OpenDialog1.Execute then
begin
// 睲戈
Query1.Close ;
Query1.Sql.clear ;
Query1.Sql.add('delete from mytest');
Query1.ExecSql;

MsExcel:= CreateOleObject('Excel.Application'); //這句語句怎麼也通不過呢?請高手指教,開發工具為Delphi7 office2003
MsExcelWorkBook:= msExcel.Workbooks.Open(OpenDialog1.FileName);
MsExcelWorkSheet:= msExcel.Worksheets.Item[1];

Query1.Close ;
Query1.Sql.clear ;
Query1.Sql.add('select * from mytest');
Query1.Open;

for i := 3 to MsExcelWorkSheet.Rows.Count do
begin
BoxNo := MsExcelWorkSheet.Range[Chr(65) IntToStr(i)].Value;
if BoxNo <> '' then
begin
Query1.Append;
Query1.FieldByName('A01').AsFloat :=strtoFloat(BoxNo);
Query1.FieldByName('A02').AsFloat :=MsExcelWorkSheet.Range[Chr(67) IntToStr(i)].Value;
Query1.FieldByName('RecNo').AsInteger := i-2;
Query1.Post;
end
else
Break;
Application.ProcessMessages;
end;
MessageDlg('蹲戈ЧΘ!',mtInformation,[mbOk],0) ;
end;

系統時間:2017-10-19 19:04:44
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!