.NET讀寫(xiě)Excel工具Spire.Xls使用 Excel單元格控制(3)
前一篇文章:“ .NET讀寫(xiě)Excel工具Spire.Xls使用(2)Excel文件的控制”給大家介紹了C#使用Spire.XLS來(lái)控制Excel文件的基本功能和相關(guān)實(shí)踐代碼。這篇文章將重點(diǎn)介紹C#操作Excel文件時(shí),對(duì)Excel單元格的控制。
以前在使用NPOI的時(shí)候,其實(shí)印象最深的還是單元格的操作,因?yàn)橐郧笆褂肗POI的主要任務(wù)是生成一個(gè)復(fù)雜的統(tǒng)計(jì)報(bào)表,不僅表頭比較復(fù)雜,而且行類(lèi)別的控制也比較復(fù)雜,不是固定的,要?jiǎng)討B(tài)的進(jìn)行。并且不同單元格的邊框還不一樣,所以當(dāng)初使用 NPOI 也走了不少?gòu)澛贰?duì)單元格的控制是寫(xiě)入Excel文件的最核心的東西。所以本篇文章就介紹我在使用Spire.XLS過(guò)程中相關(guān)單元格的控制總結(jié)。
1.Excel單元格概述
Excel單元格是表格的最小編輯單元,也是操作的主體,日常涉及到的相關(guān)功能有:
1.對(duì)指定單元格讀寫(xiě)內(nèi)容:讀寫(xiě)內(nèi)容的時(shí)候,有一些操作可以和格式控制,如單元格的類(lèi)型進(jìn)行合并;
2.對(duì)單元格的格式進(jìn)行控制,如數(shù)字,字符串,文字顏色,字體大小等等;對(duì)于自定義報(bào)表等文件,這個(gè)要求是比較常見(jiàn)的;
3.對(duì)單元格的樣式進(jìn)行控制,如邊框線條(樣式,顏色),內(nèi)容對(duì)齊,合并單元格等等,也是很常見(jiàn)的;
4.單元格的相關(guān)統(tǒng)計(jì),如一些函數(shù),求和統(tǒng)計(jì)功能等等;
5.單元格的保護(hù)功能可以參考上一篇文章.NET讀寫(xiě)Excel工具Spire.Xls使用(2)Excel文件的控制
接下來(lái)的內(nèi)容主要對(duì)上述4個(gè)主要用途進(jìn)行演示,附一些實(shí)際代碼。如果有需要補(bǔ)充的,請(qǐng)留言。
2.單元格內(nèi)容的讀寫(xiě)
在Spire.XLS中讀寫(xiě)單元格,主要的一個(gè)對(duì)象不可不知,那就是CellRange,代表是單元格的一個(gè)范圍集合,可以根據(jù)單元格的名稱(chēng)如A1,B2來(lái)返回單元格集合,也可以根據(jù)行號(hào)和列號(hào)(下標(biāo)從1開(kāi)始)來(lái)訪問(wèn)。例如下面的代碼,直接對(duì)A1單元格賦值,然后對(duì)第一行第2個(gè)單元格賦值。相比NPOI,不停的Create再賦值,這確實(shí)方便不少??创a:
static void ExcelTest5() { //創(chuàng)建1個(gè)工作簿,相當(dāng)于1個(gè)Excel文件 Workbook workbook = new Workbook(); //獲取第一個(gè)sheet,進(jìn)行操作,下標(biāo)是從0開(kāi)始 Worksheet sheet = workbook.Worksheets[0]; //向A1單元格寫(xiě)入文字 sheet.Range["A1"].Text = "我是A1單元格"; sheet.Range[1, 2].Text = "我是第1行的第2個(gè)單元格"; //將Excel文件保存到指定文件,還可以指定Excel版本 workbook.SaveToFile("例子.xls", ExcelVersion.Version97to2003); }
看效果:
而如果要訪問(wèn)對(duì)應(yīng)單元格的值,也是可以直接通過(guò)上述CellRange獲取單元格對(duì)象后,直接訪問(wèn)其屬性Value,或者Text,NumberValue來(lái)獲取你想要類(lèi)型的值,不需要自己轉(zhuǎn)換。但是前提你要知道單元格的格式。如下面代碼:
Console.WriteLine(sheet.Range["A1"].Value); Console.WriteLine(sheet.Range["B1"].Text);
3.單元格的內(nèi)容格式與樣式
3.1 單元格的數(shù)據(jù)類(lèi)型
在使用NPOI的過(guò)程中,不僅單元格要頻繁Create,對(duì)寫(xiě)入的數(shù)據(jù)格式也要設(shè)置,而在Spire.XLS中,這些變得更簡(jiǎn)單了。直接根據(jù)數(shù)據(jù)類(lèi)型給指定屬性就OK了,非常簡(jiǎn)潔明了。例如,下面的代碼,直接向單元格寫(xiě)入雙精度,日期和布爾類(lèi)型的數(shù)據(jù),給NumberValue,DateTimeValue,BooleanValue屬性直接賦值就好了。
//向A1單元格寫(xiě)入文字 sheet.Range["A1"].Text = "我是A1單元格"; sheet.Range[1, 2].Text = "我是第1行的第2個(gè)單元格"; sheet.Range["A3"].NumberValue = 100.23; sheet.Range["A4"].DateTimeValue = DateTime.Now; sheet.Range["A5"].BooleanValue = true;
是不是非常簡(jiǎn)單,一行代碼搞定的東西,以前可能要幾行,多了之后也有些頭疼。
3.2 單元格的字體格式
以前的NPOI樣式的控制,要單獨(dú)新建樣式對(duì)象進(jìn)行設(shè)置,而在Spire.XLS中,更加直接,直接對(duì)Range的屬性進(jìn)行設(shè)置就好了,非常簡(jiǎn)單明了,看看我們對(duì)范圍內(nèi)的單元格是如何控制字體格式的,只列舉了幾個(gè)屬性,其他屬性以此類(lèi)推:
1 //對(duì)一定范圍內(nèi)的單元格進(jìn)行字體控制
2 sheet.Range["A1:B10"].Style.Font.FontName = "微軟雅黑";//字體名稱(chēng)
3 sheet.Range["A1:B10"].Style.Font.Size = 20;//字體大小
4 sheet.Range["A1:B10"].Style.Font.Underline = FontUnderlineType.DoubleAccounting;//下劃線類(lèi)型
看看效果:
是不是更簡(jiǎn)單,Range的范圍選擇也很靈活。
3.3 合并單元格
合并單元格在用Excel做報(bào)表的時(shí)候很有用,在C#中操作合并單元格,其實(shí)也非常容易。
//將A5-B6的單元格合并 sheet.Range["A5:B6"].Merge(); //將某一行全部合并 sheet.Rows[7].Merge();
這里要注意:合并一行的話,不是把所有一行單元格都合并掉,而是默認(rèn)合并到最后一列(取最大有值的列)。效果如下:
有的時(shí)候需要取消合并單元格,其實(shí)和上面原理是一樣的,用的是UnMerge方法。這里就不再演示。
3.4 單元格的其他功能
其實(shí)單元格的操作還有很多,例如格式的復(fù)制應(yīng)用到其他單元格,隱藏行或者列,插入行或者列等等,這些做起來(lái)其實(shí)都很簡(jiǎn)單,可以參考官方網(wǎng)站提供的教程,由于我這方面用得少,就不詳細(xì)介紹了,以后自己用得上的話,也是去翻這些文檔:官方教程鏈接。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
.NetCore實(shí)現(xiàn)上傳多文件的示例詳解
本章和大家分享的是.NetCore的MVC框架上傳文件的示例,主要講的內(nèi)容有:form方式提交上傳,ajax上傳,ajax提交+上傳進(jìn)度效果,Task并行處理+ajax提交+上傳進(jìn)度,對(duì)大家非常有幫助,感興趣的朋友跟隨小編一起學(xué)習(xí)吧2017-04-04ASP.NET Session的七點(diǎn)認(rèn)識(shí)小結(jié)
ASP.NET Session的使用當(dāng)中我們會(huì)遇到很多的問(wèn)題,那么這里我們來(lái)談下經(jīng)常出現(xiàn)的一些常用ASP.NET Session的理解2011-07-07MS SQL 實(shí)現(xiàn)驗(yàn)證字符串是否包含有大小寫(xiě)字母的功能
這篇文章主要介紹了MS SQL 實(shí)現(xiàn)驗(yàn)證字符串是否包含有大小寫(xiě)字母的功能的相關(guān)資料,這樣的功能通常應(yīng)用在字符串的復(fù)雜度需要的朋友可以參考下2016-11-11