前一篇文章:“ .NET讀寫Excel工具Spire.Xls使用(2)Excel文件的控制”給大家介紹了C#使用Spire.XLS來控制Excel文件的基本功能和相關實踐代碼。這篇文章將重點介紹C#操作Excel文件時,對Excel單元格的控制。
以前在使用NPOI的時候,其實印象最深的還是單元格的操作,因為以前使用NPOI的主要任務是生成一個復雜的統計報表,不僅表頭比較復雜,而且行類別的控制也比較復雜,不是固定的,要動態的進行。并且不同單元格的邊框還不一樣,所以當初使用 NPOI 也走了不少彎路。對單元格的控制是寫入Excel文件的最核心的東西。所以本篇文章就介紹我在使用Spire.XLS過程中相關單元格的控制總結。
1.Excel單元格概述
Excel單元格是表格的最小編輯單元,也是操作的主體,日常涉及到的相關功能有:
1.對指定單元格讀寫內容:讀寫內容的時候,有一些操作可以和格式控制,如單元格的類型進行合并;
2.對單元格的格式進行控制,如數字,字符串,文字顏色,字體大小等等;對于自定義報表等文件,這個要求是比較常見的;
3.對單元格的樣式進行控制,如邊框線條(樣式,顏色),內容對齊,合并單元格等等,也是很常見的;
4.單元格的相關統計,如一些函數,求和統計功能等等;
5.單元格的保護功能可以參考上一篇文章.NET讀寫Excel工具Spire.Xls使用(2)Excel文件的控制
接下來的內容主要對上述4個主要用途進行演示,附一些實際代碼。如果有需要補充的,請留言。
2.單元格內容的讀寫
在Spire.XLS中讀寫單元格,主要的一個對象不可不知,那就是CellRange,代表是單元格的一個范圍集合,可以根據單元格的名稱如A1,B2來返回單元格集合,也可以根據行號和列號(下標從1開始)來訪問。例如下面的代碼,直接對A1單元格賦值,然后對第一行第2個單元格賦值。相比NPOI,不停的Create再賦值,這確實方便不少。看代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
static void ExcelTest5() { //創建1個工作簿,相當于1個Excel文件 Workbook workbook = new Workbook(); //獲取第一個sheet,進行操作,下標是從0開始 Worksheet sheet = workbook.Worksheets[0]; //向A1單元格寫入文字 sheet.Range[ "A1" ].Text = "我是A1單元格" ; sheet.Range[1, 2].Text = "我是第1行的第2個單元格" ; //將Excel文件保存到指定文件,還可以指定Excel版本 workbook.SaveToFile( "例子.xls" , ExcelVersion.Version97to2003); } |
看效果:
而如果要訪問對應單元格的值,也是可以直接通過上述CellRange獲取單元格對象后,直接訪問其屬性Value,或者Text,NumberValue來獲取你想要類型的值,不需要自己轉換。但是前提你要知道單元格的格式。如下面代碼:
1
2
|
Console.WriteLine(sheet.Range[ "A1" ].Value); Console.WriteLine(sheet.Range[ "B1" ].Text); |
3.單元格的內容格式與樣式
3.1 單元格的數據類型
在使用NPOI的過程中,不僅單元格要頻繁Create,對寫入的數據格式也要設置,而在Spire.XLS中,這些變得更簡單了。直接根據數據類型給指定屬性就OK了,非常簡潔明了。例如,下面的代碼,直接向單元格寫入雙精度,日期和布爾類型的數據,給NumberValue,DateTimeValue,BooleanValue屬性直接賦值就好了。
1
2
3
4
5
6
7
|
//向A1單元格寫入文字 sheet.Range[ "A1" ].Text = "我是A1單元格" ; sheet.Range[1, 2].Text = "我是第1行的第2個單元格" ; sheet.Range[ "A3" ].NumberValue = 100.23; sheet.Range[ "A4" ].DateTimeValue = DateTime.Now; sheet.Range[ "A5" ].BooleanValue = true ; |
是不是非常簡單,一行代碼搞定的東西,以前可能要幾行,多了之后也有些頭疼。
3.2 單元格的字體格式
以前的NPOI樣式的控制,要單獨新建樣式對象進行設置,而在Spire.XLS中,更加直接,直接對Range的屬性進行設置就好了,非常簡單明了,看看我們對范圍內的單元格是如何控制字體格式的,只列舉了幾個屬性,其他屬性以此類推:
1 //對一定范圍內的單元格進行字體控制
2 sheet.Range["A1:B10"].Style.Font.FontName = "微軟雅黑";//字體名稱
3 sheet.Range["A1:B10"].Style.Font.Size = 20;//字體大小
4 sheet.Range["A1:B10"].Style.Font.Underline = FontUnderlineType.DoubleAccounting;//下劃線類型
看看效果:
是不是更簡單,Range的范圍選擇也很靈活。
3.3 合并單元格
合并單元格在用Excel做報表的時候很有用,在C#中操作合并單元格,其實也非常容易。
1
2
3
4
|
//將A5-B6的單元格合并 sheet.Range[ "A5:B6" ].Merge(); //將某一行全部合并 sheet.Rows[7].Merge(); |
這里要注意:合并一行的話,不是把所有一行單元格都合并掉,而是默認合并到最后一列(取最大有值的列)。效果如下:
有的時候需要取消合并單元格,其實和上面原理是一樣的,用的是UnMerge方法。這里就不再演示。
3.4 單元格的其他功能
其實單元格的操作還有很多,例如格式的復制應用到其他單元格,隱藏行或者列,插入行或者列等等,這些做起來其實都很簡單,可以參考官方網站提供的教程,由于我這方面用得少,就不詳細介紹了,以后自己用得上的話,也是去翻這些文檔:官方教程鏈接。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:http://www.cnblogs.com/asxinyu/p/Spire_XLS_3_CellControl.html