.NET讀寫Excel工具Spire.Xls使用入門教程(1)
在.NET平臺,操作Excel文件是一個(gè)非常常用的需求,目前比較常規(guī)的方法有以下幾種:
1.Office Com組件的方式:這個(gè)方式非常累人,微軟的東西總是這么的復(fù)雜,使用起來可能非常不便,需要安裝Excel,對于服務(wù)器,有時(shí)候還需要為配置IIS權(quán)限。折騰人,看到很多人在群里面使用這個(gè)東西,出現(xiàn)各種抓狂的錯(cuò)誤;
這里特別感謝:PowerShell免費(fèi)軟件 的回復(fù),用用powershell + excel 2007的方式,他很好的解決問題。其實(shí)我想說的是,Office既然提供了對com組件的支持,肯定是各方面問題都考慮到了,使用肯定是沒有問題的,只不過學(xué)習(xí)成本很大,每個(gè)人精力,技術(shù)能力有限,懶得去折騰和再去學(xué)習(xí),解決的方式肯定都是有的。而純粹的NPOI,Spire這種操作方式可以讓更多的開發(fā)人員快速的掌握,效率提高,各有所長吧,看自己的選擇。
另外對于免費(fèi)版本的限制和收費(fèi)的問題,這個(gè)暫時(shí)沒有辦好,大家八仙過海各顯神通把。哈哈,你懂的。
2.開源.NET組件NPOI方式:這個(gè)方式應(yīng)該是很多人都在使用的,這個(gè)開源的組件相比第一種,雖然稍微簡單了點(diǎn)(2003支持比較好,新版本也支持Xlsx),但還是非常好用的;最近在瀏覽NPOI的開源網(wǎng)站的時(shí)候,突然發(fā)現(xiàn)Spire居然是NPOI的贊助商。。贊一個(gè)吧,互相幫助,服務(wù)大眾,不像國內(nèi)的什么 百毒,企鵝,一天到晚打架,互抨,還要封殺,真是可憐啊。看看NPOI的Codeplex網(wǎng)站截圖:

今天給大家介紹的.NET平臺操作Excel組件Spire.XLS,應(yīng)該來說比上面2種方法要更好更穩(wěn)定,功能也更多,先看看基本介紹:
1.Spire.Office for .NET
Spire.Office for .NET是E-iceblue開發(fā)的一種企業(yè)級.NET Office編輯的軟件集合,包括Spire.Doc,Spire XLS,Spire.PDF,Spire.BarCode等等。.NET平臺的開發(fā)人員可以使用Spire.Office for .NET輕松的操作含有文檔編輯功能的應(yīng)用程序,還可以導(dǎo)出為MS Word/Excel/RTF/Acces、PDF、XPS、HTML、XML等格式,使用Spire.Office,不需要安裝Microsoft Office。雖然Spire.Office for .NET是商業(yè)產(chǎn)品,但它的每一個(gè)基礎(chǔ)功能組件都提供了免費(fèi)版本??梢匀ス倬W(wǎng)看看:http://www.e-iceblue.com/。雖然有一些限制,但簡單的東西還是可以試一試。本文介紹的Spire.XLS只是Spire.Office下面的一個(gè)操作Excel的組件。
2.Spire.XLS特點(diǎn)
Spire.XLS for .NET 支持所有Excel格式類型(97-2003, 2007, 2010)文件。通過Spire.XLS for .NET,開發(fā)人員可以快速方便的查看,生成,讀寫以及自定義編輯Excel文件。Spire.XLS for .NET有以下主要功能:
1.支持Excel文件的新建,修改編輯,單元格拆分合并,屬性設(shè)置,加鎖加密等等;
2.支持?jǐn)?shù)據(jù)庫導(dǎo)出到Excel工作表,或者把數(shù)據(jù)從Excel數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫;
3.提供強(qiáng)大的設(shè)置單元格格,格式化數(shù)字,文字縮進(jìn),定位調(diào)整,單元格填充以及保護(hù)等;
4.支持向Excel文件里面寫入公式,表格,圖片,不同類型的文字,鏈接,注釋甚至VBA等內(nèi)容;
5.支持將Excel文件轉(zhuǎn)換成PDF, HTML, CSV, Text, XML以及圖片格式。
支持的Excel文件版本很多,看看下面這個(gè)圖就了解了,下面是枚舉類型ExcelVersion的成員列表:

Spire.XLS也提供了免費(fèi)版本,下載地址:http://www.e-iceblue.com/Introduce/free-xls-component.html,稍微有一些限制,主要限制是單個(gè)workbook最多5個(gè)sheet,且每個(gè)sheet最多支持150行。由于我使用的是正版,所以下面的演示沒有這個(gè)問題。
3.寫個(gè)Hello Excel
由于微軟的Office太過龐大,我早就拋棄了,這幾年一直在用國產(chǎn)的WPS,效果還可以可以,主要是小,才幾十M,常用功能也絲毫不遜色與Office。一直的確方便,還免費(fèi),二是現(xiàn)在的軟件都在爭用戶,軟件大得不得了,占用內(nèi)存也不斷增大,其實(shí)受苦的是用戶。龐大的Office不是特殊要求,盡量就不要整了,受罪。
我使用的是Spire.Office 2.1版本,因?yàn)閱挝挥姓?,所有沒有用免費(fèi)版,系統(tǒng)win7-32bit+WPS最新的搶鮮版。工具用的是VS2013,項(xiàng)目類型.NET 4.0(當(dāng)然組件本身支持的環(huán)境很多,如.NET 2.0,3.5,4.0,4.0 ClientProfile,Silverlight3/4/5,WPF等等)。
1.基本準(zhǔn)備
第一個(gè)步驟,新建項(xiàng)目就不說了,主要是引用相應(yīng)版本的dll文件,以及添加命名空間的引用:

2.編寫基本代碼
現(xiàn)在都流行Hello world,使用這個(gè)之前,先簡單體驗(yàn)一把Hello Excel。代碼非常簡單,有注釋。
using System;
using Spire.Xls;//這是一個(gè)最主要的命名空間
namespace XlsTest
{
class Program
{
static void Main(string[] args)
{
HelloExcel();
Console.ReadLine();
}
static void HelloExcel()
{
//創(chuàng)建1個(gè)工作簿,相當(dāng)于1個(gè)Excel文件
//Excel的文檔結(jié)構(gòu)是 Workbook->Worksheet(1個(gè)book可以包含多個(gè)sheet)
Workbook workbook = new Workbook();
//獲取第一個(gè)sheet,進(jìn)行操作,下標(biāo)是從0開始
Worksheet sheet = workbook.Worksheets[0];
//當(dāng)然你也可以自己添加1個(gè)命名的Worksheet到book中
workbook.Worksheets.Add("測試sheet");
//向A1單元格寫入文字
sheet.Range["A1"].Text = "Hello,World!";
//將Excel文件保存到指定文件,還可以指定Excel版本
workbook.SaveToFile("Sample.xls", ExcelVersion.Version97to2003);
}
}
}
3.看看效果
代碼很簡單,看看實(shí)際效果。2個(gè)地方,一個(gè)是文字,1個(gè)是新建的一個(gè)Sheet,默認(rèn)的Excel文件是3個(gè)Sheet。

4.與微軟Com操作和NPOI區(qū)別
目前來說使用微軟com操作方式和NPOI組件是最普遍的,當(dāng)然也有很多網(wǎng)友分享過使用商業(yè)組件的文章。本文前開頭也已經(jīng)介紹過了,微軟com操作,最頭疼的是依賴office,對環(huán)境要求挺大,很多人都是因?yàn)檫@個(gè)東西放棄了,而采用開源或者商業(yè)的,獨(dú)立于Office環(huán)境的操作組件,例如NPOI,Spire等等。由于我沒有使用過微軟Office的com方式來操作過文檔,所以在這里不做過多比較,重點(diǎn)比較我以前使用NPOI和現(xiàn)在這個(gè)Spire.XLS的一點(diǎn)區(qū)別。
1.NPOI在2.0版本(應(yīng)該是2014年發(fā)布的)以后開始支持Office 2007版本的Excel,很多功能還相對較弱;對Office 2003的支持是比較完善的,我以前工作中也只用到2003;
2.Spire.XLS對Excel版本的支持就完善得多,上述也有說明,支持版本Office 2010/2013非常完善,這也是這次使用它的主要原因;
3.在以前使用NPOI 2.0之前的版本的時(shí)候,用NPOI做過很復(fù)雜的報(bào)表,但是有一個(gè)很深的感受,NPOI的命名空間比較多,而且比較難記,例如HSSF,POIFS,SS等等搞不懂啥意思,不夠直觀,所以經(jīng)常是找不到在哪里,特別是后期維護(hù)的時(shí)候,要加點(diǎn)功能;
4.NPOI在對Excel生成圖表的支持上不夠,貌似2.0以前的版本根本就不行,現(xiàn)在新的版本我也沒試過,不知道情況怎么樣。我使用Spire.XLS的一個(gè)原因就是自動(dòng)生成的報(bào)表里面要生成圖表功能,這一點(diǎn)Spire.XLS支持非常好;
5.NPOI在功能上把握很準(zhǔn)確,很核心,其實(shí)作為開源組件,已經(jīng)非常好了。對與Excel文件的一些輔助操作,如文件格式轉(zhuǎn)換,數(shù)據(jù)導(dǎo)出導(dǎo)入等等,Spire.XLS是好一點(diǎn),當(dāng)然這些通過NPOI的擴(kuò)展也是可以完成的。
6.其他優(yōu)缺點(diǎn)和使用的問題,在這個(gè)項(xiàng)目完成之后,有更加深入的對比,到時(shí)候再分享給大家吧,也歡迎大家補(bǔ)充。
5.資源
NPOI開源網(wǎng)站:http://npoi.codeplex.com/
Spire.Office官方免費(fèi)版:http://www.e-iceblue.com/Introduce/free-xls-component.html
下一篇文章:【原創(chuàng)】.NET讀寫Excel工具Spire.Xls使用(2)Excel文件的控制 即將發(fā)布,敬請關(guān)注。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
ubuntu16.4下用jexus部署ASP.NET Core環(huán)境
這篇文章主要以圖文結(jié)合的方式介紹了ubuntu16.4下ASP.NET Core部署環(huán)境搭建步驟,感興趣的小伙伴們可以參考一下2016-07-07
ASP.NET 5中使用AzureAD實(shí)現(xiàn)單點(diǎn)登錄
本文給大家介紹的是在ASP.NET 5中使用AzureAD實(shí)現(xiàn)單點(diǎn)登錄的方法和示例,有需要的小伙伴可以參考下。2015-07-07
asp.net 關(guān)于字符串內(nèi)范圍截取的一點(diǎn)方法總結(jié)
前兩天有一位網(wǎng)友提出了一個(gè)字符串內(nèi)截取字符串的問題,除了用普通的字符串截取的方式外,我推薦的是用LINQ方式來截取。兩者實(shí)際上差別不是很大,都是采用字符串截取方式,但后者從寫法和觀察效果會比前者簡單實(shí)用得多。2010-02-02
asp.net mvc 從數(shù)據(jù)庫中讀取圖片的實(shí)現(xiàn)代碼
今天搞了一天的MVC,在顯示圖片的時(shí)候老是出現(xiàn)問題,從網(wǎng)上搜索了好久,才找到解決方法。2010-05-05
實(shí)現(xiàn)DataGridView控件中CheckBox列的使用實(shí)例
最近做WindowsForms程序,使用DataGridView控件時(shí),加了一列做選擇用,發(fā)現(xiàn)CheckBox不能選中。搜索后,要實(shí)現(xiàn)DataGridView的CellContentClick事件,將代碼貼一下2014-01-01
.net framework中引進(jìn)的var對象類型聲明
安裝了vs 2008之后,在后臺代碼中,resharper插件對后臺所有局部變量進(jìn)行提示建議,顯示需要采用use implicitly typed local variable declaration,通過代碼修改建議2010-12-12
GridView分頁的實(shí)現(xiàn)以及自定義分頁樣式功能實(shí)例
本文為大家詳細(xì)介紹下GridView實(shí)現(xiàn)分頁并自定義的分頁樣式,具體示例代碼如下,有想學(xué)習(xí)的朋友可以參考下哈,希望對大家有所幫助2013-07-07

