天天看點

【原創】.NET讀寫Excel工具Spire.Xls使用(3)單元格控制

【原創】.NET讀寫Excel工具Spire.Xls使用(3)單元格控制

以前在使用NPOI的時候,其實印象最深的還是單元格的操作,因為以前使用NPOI的主要任務是生成一個複雜的統計報表,不僅表頭比較複雜,而且行類别的控制也比較複雜,不是固定的,要動态的進行。并且不同單元格的邊框還不一樣,是以當初使用 NPOI 也走了不少彎路。對單元格的控制是寫入Excel檔案的最核心的東西。是以本篇文章就介紹我在使用Spire.XLS過程中相關單元格的控制總結。

                本部落格所有文章分類的總目錄:http://www.cnblogs.com/asxinyu/p/4288836.html

.NET讀寫Excel工具Spire.Xls使用文章目錄:http://www.cnblogs.com/asxinyu/p/4374032.html

  前一篇文章:“.NET讀寫Excel工具Spire.Xls使用(2)Excel檔案的控制”給大家介紹了C#使用Spire.XLS來控制Excel檔案的基本功能和相關實踐代碼。這篇文章将重點介紹C#操作Excel檔案時,對Excel單元格的控制。

  以前在使用NPOI的時候,其實印象最深的還是單元格的操作,因為以前使用NPOI的主要任務是生成一個複雜的統計報表,不僅表頭比較複雜,而且行類别的控制也比較複雜,不是固定的,要動态的進行。并且不同單元格的邊框還不一樣,是以當初使用 NPOI 也走了不少彎路。對單元格的控制是寫入Excel檔案的最核心的東西。是以本篇文章就介紹我在使用Spire.XLS過程中相關單元格的控制總結。

  本文原文位址:http://www.cnblogs.com/asxinyu/p/4365889.html 

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 static void ExcelTest5()
 2 {
 3     //建立1個工作簿,相當于1個Excel檔案
 4     Workbook workbook = new Workbook();
 5 
 6     //擷取第一個sheet,進行操作,下标是從0開始
 7     Worksheet sheet = workbook.Worksheets[0];
 8 
 9     //向A1單元格寫入文字
10     sheet.Range["A1"].Text = "我是A1單元格";
11     sheet.Range[1, 2].Text = "我是第1行的第2個單元格";
12 
13     //将Excel檔案儲存到指定檔案,還可以指定Excel版本
14     workbook.SaveToFile("例子.xls", ExcelVersion.Version97to2003);
15 }      

看效果:

【原創】.NET讀寫Excel工具Spire.Xls使用(3)單元格控制

而如果要通路對應單元格的值,也是可以直接通過上述CellRange擷取單元格對象後,直接通路其屬性Value,或者Text,NumberValue來擷取你想要類型的值,不需要自己轉換。但是前提你要知道單元格的格式。如下面代碼:

1 Console.WriteLine(sheet.Range["A1"].Value);
2 Console.WriteLine(sheet.Range["B1"].Text);      

3.單元格的内容格式與樣式

3.1 單元格的資料類型

  在使用NPOI的過程中,不僅單元格要頻繁Create,對寫入的資料格式也要設定,而在Spire.XLS中,這些變得更簡單了。直接根據資料類型給指定屬性就OK了,非常簡潔明了。例如,下面的代碼,直接向單元格寫入雙精度,日期和布爾類型的資料,給NumberValue,DateTimeValue,BooleanValue屬性直接指派就好了。

1 //向A1單元格寫入文字
2 sheet.Range["A1"].Text = "我是A1單元格";
3 sheet.Range[1, 2].Text = "我是第1行的第2個單元格";
4 
5 sheet.Range["A3"].NumberValue = 100.23;
6 sheet.Range["A4"].DateTimeValue = DateTime.Now;            
7 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;//下劃線類型      

看看效果:

【原創】.NET讀寫Excel工具Spire.Xls使用(3)單元格控制

  是不是更簡單,Range的範圍選擇也很靈活。

3.3 合并單元格

  合并單元格在用Excel做報表的時候很有用,在C#中操作合并單元格,其實也非常容易。

1 //将A5-B6的單元格合并
2 sheet.Range["A5:B6"].Merge();
3 //将某一行全部合并
4 sheet.Rows[7].Merge();      

這裡要注意:合并一行的話,不是把所有一行單元格都合并掉,而是預設合并到最後一列(取最大有值的列)。效果如下:

【原創】.NET讀寫Excel工具Spire.Xls使用(3)單元格控制

  有的時候需要取消合并單元格,其實和上面原理是一樣的,用的是UnMerge方法。這裡就不再示範。

3.4 單元格的其他功能

  其實單元格的操作還有很多,例如格式的複制應用到其他單元格,隐藏行或者列,插入行或者列等等,這些做起來其實都很簡單,可以參考官方網站提供的教程,由于我這方面用得少,就不詳細介紹了,以後自己用得上的話,也是去翻這些文檔:官方教程連結。

4.資源代碼

  參考官方例子和本文的系列文章:http://www.cnblogs.com/asxinyu/p/4374032.html

.NET資料挖掘與機器學習,作者部落格:

http://www.cnblogs.com/asxinyu

E-mail:[email protected]