以前在使用npoi的時候,其實印象最深的還是單元格的操作,因為以前使用npoi的主要任務是生成一個複雜的統計報表,不僅表頭比較複雜,而且行類别的控制也比較複雜,不是固定的,要動态的進行。并且不同單元格的邊框還不一樣,是以當初使用 npoi 也走了不少彎路。對單元格的控制是寫入excel檔案的最核心的東西。是以本篇文章就介紹我在使用spire.xls過程中相關單元格的控制總結。
excel單元格是表格的最小編輯單元,也是操作的主體,日常涉及到的相關功能有:
1.對指定單元格讀寫内容:讀寫内容的時候,有一些操作可以和格式控制,如單元格的類型進行合并;
2.對單元格的格式進行控制,如數字,字元串,文字顔色,字型大小等等;對于自定義報表等檔案,這個要求是比較常見的;
3.對單元格的樣式進行控制,如邊框線條(樣式,顔色),内容對齊,合并單元格等等,也是很常見的;
4.單元格的相關統計,如一些函數,求和統計功能等等;
接下來的内容主要對上述4個主要用途進行示範,附一些實際代碼。如果有需要補充的,請留言。
在spire.xls中讀寫單元格,主要的一個對象不可不知,那就是cellrange,代表是單元格的一個範圍集合,可以根據單元格的名稱如a1,b2來傳回單元格集合,也可以根據行号和列号(下标從1開始)來通路。例如下面的代碼,直接對a1單元格指派,然後對第一行第2個單元格指派。相比npoi,不停的create再指派,這确實友善不少。看代碼:
看效果:

而如果要通路對應單元格的值,也是可以直接通過上述cellrange擷取單元格對象後,直接通路其屬性value,或者text,numbervalue來擷取你想要類型的值,不需要自己轉換。但是前提你要知道單元格的格式。如下面代碼:
在使用npoi的過程中,不僅單元格要頻繁create,對寫入的資料格式也要設定,而在spire.xls中,這些變得更簡單了。直接根據資料類型給指定屬性就ok了,非常簡潔明了。例如,下面的代碼,直接向單元格寫入雙精度,日期和布爾類型的資料,給numbervalue,datetimevalue,booleanvalue屬性直接指派就好了。
是不是非常簡單,一行代碼搞定的東西,以前可能要幾行,多了之後也有些頭疼。
以前的npoi樣式的控制,要單獨建立樣式對象進行設定,而在spire.xls中,更加直接,直接對range的屬性進行設定就好了,非常簡單明了,看看我們對範圍内的單元格是如何控制字型格式的,隻列舉了幾個屬性,其他屬性以此類推:
看看效果:
是不是更簡單,range的範圍選擇也很靈活。
合并單元格在用excel做報表的時候很有用,在c#中操作合并單元格,其實也非常容易。
這裡要注意:合并一行的話,不是把所有一行單元格都合并掉,而是預設合并到最後一列(取最大有值的列)。效果如下:
有的時候需要取消合并單元格,其實和上面原理是一樣的,用的是unmerge方法。這裡就不再示範。