在GIS數據處理中,經常遇到與Excel的交互,這里進行簡單的總結。
Excel行列號就像是編輯中的二維數據組,操作Excel相當於操作二維數組。遍歷、循環、取值、賦值……
1.添加引用
添加引用也有版本的問題,我們都知道每一代office除了有一個以年份命名的銷售名稱(2003、2007、2010等)外,還有一個類似於內部版本號的代號,是以數字遞增的。
office 2003:office 11
office 2007:office 12
office 2010:office 14(聽說13不吉利,沒有office 13)
office 2013:office 15我添加的是14版,在office2013和office2010環境下測試可用。
using Microsoft.Office.Interop.Excel
2.認識對象
Excel對象模型包括了128個不同的對象,其中用得比較多的就四個:
(1) Application對象。Application對象處於Excel對象層次結構的頂層,表示Excel自身的運行環境。
(2) Workbook對象。Workbook對象直接地處於Application對象的下層,表示一個Excel工作薄文件。
(3) Worksheet對象。Worksheet對象包含於Workbook對象,表示一個Excel工作表。
(4) Range對象。Range對象包含於Worksheet對象,表示Excel工作表中的一個或多個單元格。
3.基本操作
一般在操作中,都不開這下面四個:
Excel.Application oApp; Excel._Workbook oWbook; Excel._Worksheet oWSheet; Excel.Range oRng;
然后創建Excel
//創建Excel對象 oApp = new Excel.Application(); oApp.Visible = true; //是否可見
創建工作簿、工作表
//創建一個新的工作簿、工作表 oWbook = (Excel._Workbook)(oApp.Workbooks.Add(Missing.Value)); oWSheet = (Excel._Worksheet)oWbook.ActiveSheet;
取值
//獲取單元格的值 sheet = ((Microsoft.Office.Interop.Excel.Range)oWSheet.Cells[1, 2]).Text;
寫值
//設置某行某列的值,從1開始 oWSheet.Cells[1, 1] = "First Name"; oWSheet.Cells[1, 2] = "Last Name";
設置格式
//設置多個單元格格式 oWSheet.get_Range("A1", "D1").Font.Bold = true; oWSheet.get_Range("A1", "D1").VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;
保存
//保存工作簿 oWbook.Save();
另存
oWbook.SaveAs(filePath + name, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
下面是一些常用的代碼:
1、 顯示當前窗口:ExcelApp.Visible := True;
2、 更改 Excel 標題欄:ExcelApp.Caption := '標題內容';
3、 添加新工作簿:ExcelApp.WorkBooks.Add;
4、 設置第2個工作表為活動工作表:ExcelApp.WorkSheets[2].Activate;
5、 給單元格賦值:ExcelApp.Cells[1,1].Value := '第一行第一列';
6、 設置指定列的寬度(單位:字符個數),以第一列為例:
ExcelApp.ActiveSheet.Columns[1].ColumnsWidth := 5;
7、 設置指定行的高度(單位:磅)(1磅=0.035厘米),以第二行為例:
ExcelApp.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米
8、文字水平居中:Excelid.worksheets[1].Rows[1].HorizontalAlignment := $FFFFEFF4;
文字垂直居中:Excelid.worksheets[1].Rows[1].VerticalAlignment := $FFFFEFF4;
9、 插入一行或一列:a. ExcelApp.ActiveSheet.Rows[2].Insert;
b. ExcelApp.ActiveSheet.Columns[1].Insert;
10、 刪除一行或一列:a. ExcelApp.ActiveSheet.Rows[2].Delete;
b. ExcelApp.ActiveSheet.Columns[1].Delete;
11、合並單元格:ExcelApp.worksheets[1].range[A1:F8'].Merge(abc);注:要聲明變量abc: Variant;
12、豎行顯示文字:ExcelApp.worksheets[1].Cells.Item[1,1].Orientation:= xlVertical;
13、單元格加邊線:ExcelApp.worksheets[1].Range[A1:F8].Borders.LineStyle := 1;
14、在第8行之前插入分頁符:ExcelApp.WorkSheets[1].Rows[8].PageBreak := 1;
15、在第4列之前刪除分頁符:ExcelApp.ActiveSheet.Columns[4].PageBreak := 0;
16、指定邊框線寬度:ExcelApp.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3;
1-左 2-右 3-頂 4-底 5-斜( \ ) 6-斜( / )
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、清除第一行第四列單元格公式:ExcelApp.ActiveSheet.Cells[1,4].ClearContents;
19、工作表保存:if not ExcelApp.ActiveWorkBook.Saved then
ExcelApp.ActiveSheet.PrintPreview;
20、工作表另存為:ExcelApp.SaveAs( 'C:\Excel\Demo1.xls' );
21、放棄存盤:ExcelApp.ActiveWorkBook.Saved := True;
22、關閉工作簿:ExcelApp.WorkBooks.Close;
23、退出 Excel:ExcelApp.Quit;
下面是有關打印頁面控制的語句:
24、設置第一行字體屬性: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:=10;
25、進行頁面設置:a.頁眉:ExcelApp.ActiveSheet.PageSetup.CenterHeader := '報表演示';
b.頁腳:ExcelApp.ActiveSheet.PageSetup.CenterFooter := '共&N頁 第&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;
26、打印預覽工作表:ExcelApp.ActiveSheet.PrintPreview;
27、打印輸出工作表:ExcelApp.ActiveSheet.PrintOut;
對Excel的其他控制:
28、excel的多單元格合計功能:ExcelApp..Cells[ARow, ACol].Formula
:= '= SUM($+IntToStr(BeginRow) +:$ + IntToStr(EndRow) +');
注:聲明變量ARow, ACol: Integer;
29、打開已經存在的Excel文件: ExcelApplication1.Workbooks.Open (c:\a.xls
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,0);空的時候,還是把它寫個類。
參考:http://www.cnblogs.com/seven-google/archive/2012/02/10/2344819.html