1. 程式人生 > >【原創】.NET讀寫Excel工具Spire.Xls使用(1)入門介紹

【原創】.NET讀寫Excel工具Spire.Xls使用(1)入門介紹

  在.NET平臺,操作Excel檔案是一個非常常用的需求,目前比較常規的方法有以下幾種:

1.Office Com元件的方式:這個方式非常累人,微軟的東西總是這麼的複雜,使用起來可能非常不便,需要安裝Excel,對於伺服器,有時候還需要為配置IIS許可權。折騰人,看到很多人在群裡面使用這個東西,出現各種抓狂的錯誤;

  這裡特別感謝: 的回覆,用用powershell + excel 2007的方式,他很好的解決問題。其實我想說的是,Office既然提供了對com元件的支援,肯定是各方面問題都考慮到了,使用肯定是沒有問題的,只不過學習成本很大,每個人精力,技術能力有限,懶得去折騰和再去學習,解決的方式肯定都是有的。而純粹的NPOI,Spire這種操作方式可以讓更多的開發人員快速的掌握,效率提高,各有所長吧,看自己的選擇。

  另外對於免費版本的限制和收費的問題,這個暫時沒有辦好,大家八仙過海各顯神通把。哈哈,你懂的。

2.開源.NET元件NPOI方式:這個方式應該是很多人都在使用的,這個開源的元件相比第一種,雖然稍微簡單了點(2003支援比較好,新版本也支援Xlsx),但還是非常好用的;最近在瀏覽NPOI的開源網站的時候,突然發現Spire居然是NPOI的贊助商。。贊一個吧,互相幫助,服務大眾,不像國內的什麼 百毒,企鵝,一天到晚打架,互抨,還要封殺,真是可憐啊。看看NPOI的Codeplex網站截圖:

  今天給大家介紹的.NET平臺操作Excel元件Spire.XLS,應該來說比上面2種方法要更好更穩定,功能也更多,先看看基本介紹:

1.Spire.Office for .NET

  Spire.Office for .NET是E-iceblue開發的一種企業級.NET Office編輯的軟體集合,包括Spire.Doc,Spire XLS,Spire.PDF,Spire.BarCode等等。.NET平臺的開發人員可以使用Spire.Office for .NET輕鬆的操作含有文件編輯功能的應用程式,還可以匯出為MS Word/Excel/RTF/Acces、PDF、XPS、HTML、XML等格式,使用Spire.Office,不需要安裝Microsoft Office。雖然Spire.Office for .NET是商業產品,但它的每一個基礎功能元件都提供了免費版本

。可以去官網看看:http://www.e-iceblue.com/。雖然有一些限制,但簡單的東西還是可以試一試。本文介紹的Spire.XLS只是Spire.Office下面的一個操作Excel的元件。

2.Spire.XLS特點

  Spire.XLS for .NET 支援所有Excel格式型別(97-2003, 2007, 2010)檔案。通過Spire.XLS for .NET,開發人員可以快速方便的檢視,生成,讀寫以及自定義編輯Excel檔案。Spire.XLS for .NET有以下主要功能:

1.支援Excel檔案的新建,修改編輯,單元格拆分合並,屬性設定,加鎖加密等等;
2.支援資料庫匯出到Excel工作表,或者把資料從Excel資料匯入到資料庫;
3.提供強大的設定單元格格,格式化數字,文字縮排,定位調整,單元格填充以及保護等;
4.支援向Excel檔案裡面寫入公式,表格,圖片,不同型別的文字,連結,註釋甚至VBA等內容;
5.支援將Excel檔案轉換成PDF, HTML, CSV, Text, XML以及圖片格式。

  支援的Excel檔案版本很多,看看下面這個圖就瞭解了,下面是列舉型別ExcelVersion的成員列表:

  Spire.XLS也提供了免費版本,下載地址:http://www.e-iceblue.com/Introduce/free-xls-component.html,稍微有一些限制,主要限制是單個workbook最多5個sheet,且每個sheet最多支援150行。由於我使用的是正版,所以下面的演示沒有這個問題。

3.寫個Hello Excel

  由於微軟的Office太過龐大,我早就拋棄了,這幾年一直在用國產的WPS,效果還可以可以,主要是小,才幾十M,常用功能也絲毫不遜色與Office。一直的確方便,還免費,二是現在的軟體都在爭使用者,軟體大得不得了,佔用記憶體也不斷增大,其實受苦的是使用者。龐大的Office不是特殊要求,儘量就不要整了,受罪。

  我使用的是Spire.Office 2.1版本,因為單位有正版,所有沒有用免費版,系統win7-32bit+WPS最新的搶鮮版。工具用的是VS2013,專案型別.NET 4.0(當然元件本身支援的環境很多,如.NET 2.0,3.5,4.0,4.0 ClientProfile,Silverlight3/4/5,WPF等等)。

1.基本準備

  第一個步驟,新建專案就不說了,主要是引用相應版本的dll檔案,以及新增名稱空間的引用:

2.編寫基本程式碼

  現在都流行Hello world,使用這個之前,先簡單體驗一把Hello Excel。程式碼非常簡單,有註釋。

 1 using System;
 2 using Spire.Xls;//這是一個最主要的名稱空間
 3 
 4 namespace XlsTest
 5 {
 6     class Program
 7     {
 8         static void Main(string[] args)
 9         {
10             HelloExcel();
11             Console.ReadLine();
12         }
13         static void HelloExcel()
14         {
15             //建立1個工作簿,相當於1個Excel檔案
         //Excel的文件結構是 Workbook->Worksheet(1個book可以包含多個sheet)
16 Workbook workbook = new Workbook(); 17 18 //獲取第一個sheet,進行操作,下標是從0開始 19 Worksheet sheet = workbook.Worksheets[0]; 20 //當然你也可以自己新增1個命名的Worksheet到book中 21 workbook.Worksheets.Add("測試sheet"); 22 23 //向A1單元格寫入文字 24 sheet.Range["A1"].Text = "Hello,World!"; 25 26 //將Excel檔案儲存到指定檔案,還可以指定Excel版本 27 workbook.SaveToFile("Sample.xls", ExcelVersion.Version97to2003); 28 } 29 } 30 }

3.看看效果

  程式碼很簡單,看看實際效果。2個地方,一個是文字,1個是新建的一個Sheet,預設的Excel檔案是3個Sheet。

4.與微軟Com操作和NPOI區別

  目前來說使用微軟com操作方式和NPOI元件是最普遍的,當然也有很多網友分享過使用商業元件的文章。本文前開頭也已經介紹過了,微軟com操作,最頭疼的是依賴office,對環境要求挺大,很多人都是因為這個東西放棄了,而採用開源或者商業的,獨立於Office環境的操作元件,例如NPOI,Spire等等。由於我沒有使用過微軟Office的com方式來操作過文件,所以在這裡不做過多比較,重點比較我以前使用NPOI和現在這個Spire.XLS的一點區別。

1.NPOI在2.0版本(應該是2014年釋出的)以後開始支援Office 2007版本的Excel,很多功能還相對較弱;對Office 2003的支援是比較完善的,我以前工作中也只用到2003;

2.Spire.XLS對Excel版本的支援就完善得多,上述也有說明,支援版本Office 2010/2013非常完善,這也是這次使用它的主要原因;

3.在以前使用NPOI 2.0之前的版本的時候,用NPOI做過很複雜的報表,但是有一個很深的感受,NPOI的名稱空間比較多,而且比較難記,例如HSSF,POIFS,SS等等搞不懂啥意思,不夠直觀,所以經常是找不到在哪裡,特別是後期維護的時候,要加點功能;

4.NPOI在對Excel生成圖表的支援上不夠,貌似2.0以前的版本根本就不行,現在新的版本我也沒試過,不知道情況怎麼樣。我使用Spire.XLS的一個原因就是自動生成的報表裡面要生成圖表功能,這一點Spire.XLS支援非常好;

5.NPOI在功能上把握很準確,很核心,其實作為開源元件,已經非常好了。對與Excel檔案的一些輔助操作,如檔案格式轉換,資料匯出匯入等等,Spire.XLS是好一點,當然這些通過NPOI的擴充套件也是可以完成的。

6.其他優缺點和使用的問題,在這個專案完成之後,有更加深入的對比,到時候再分享給大家吧,也歡迎大家補充。  

5.資源

相關推薦

原創.NETExcel工具Spire.Xls使用(3)單元格控制

  前一篇文章:“.NET讀寫Excel工具Spire.Xls使用(2)Excel檔案的控制”給大家介紹了C#使用Spire.XLS來控制Excel檔案的基本功能和相關實踐程式碼。這篇文章將重點介紹C#操作Excel檔案時,對Excel單元格的控制。   以前在使用NPOI的時候,其實印象最深的還是

原創.NETExcel工具Spire.Xls使用(1)入門介紹

  在.NET平臺,操作Excel檔案是一個非常常用的需求,目前比較常規的方法有以下幾種: 1.Office Com元件的方式:這個方式非常累人,微軟的東西總是這麼的複雜,使用起來可能非常不便,需要安裝Excel,對於伺服器,有時候還需要為配置IIS許可權。折騰人,看到很多人在群裡面使用這個東西,出現各種抓

原創.NETExcel工具Spire.Xls使用(2)Excel檔案的控制

  前一篇文章:“.NET操作Excel利器Spire.Xls使用(1)入門介紹 ”給大家介紹了Spire.XLS的基本功能和一些比較。這篇文章將重點介紹C#操作Excel檔案時,對Excel檔案本身的相關設定,全域性控制的內容。因為這也是C#讀寫Excel檔案時經常碰到的文章,也是我在使用過程中的一

原創.NETExcel工具Spire.Xls使用(4)對資料操作與控制

  Spire.Office for .NET是E-iceblue開發的一種企業級.NET Office編輯的軟體集合,包括Spire.Doc,Spire XLS,Spire.PDF,Spire.BarCode等等。.NET平臺的開發人員可以使用Spire.Office for .NET輕鬆的操作含有

原創.NETExcel工具Spire.Xls使用(5)重量級的Excel圖表功能

  前一篇文章:“.NET讀寫Excel工具Spire.Xls使用(4)對資料操作與控制”給大家介紹了Spire.XLS對資料的控制相關功能,這一篇給大家介紹Spire.XLS最大的亮點所在,C#控制Excel生成圖表。將介紹C#生成不同型別圖表的方法,並介紹Excel圖表的相關操作,如調整大小,儲存

原創自己動手一個服務網關

exception 負責 lis world 前置 create ble ddr load 引言 什麽是網關?為什麽需要使用網關? 如圖所示,在不使用網關的情況下,我們的服務是直接暴露給服務調用方。當調用方增多,勢必需要添加定制化訪問權限、校驗等邏輯。當添加API網關後,

原創自己手實現Boost序列化簡易版

設計思路   在與多個系統進行網路互動時,序列化是不可缺少的技術。編寫一個C++語言的序列化實現,是練習運用模板超程式設計的絕佳案例,理解C++模板是如何"面向編譯期程式設計"的(業內好像沒有這個說法)。序列化物件處理基礎資料型別和類型別,boost的序列化功能劃分得更細緻,基本支援了C++語言

原創整數入優化 C++

一、背景 這是某道題目的狀態: 我的程式碼: 大牛的程式碼: 我瞬間萌幣了! 我有這麼慢?Are you kidding me? 點進去一看: void Read(int & p)

OpenCV3視訊cv::VideoCapture和cv::VideoWriter

OpenCV3和OpenCV2類似,視訊的讀、寫操作,分別通過cv::VideoCapture和cv::VideoWriter兩個類來實現。 1、視訊的讀取操作cv::VideoCapture cv::VideoCapture既支援視訊檔案的讀取,也支

Linux磁碟 測試

一、如何檢視當前磁碟的IO使用情況 使用命令:iotop Total DISK READ: 3.89 K/s | Total DISK WRITE: 0.00 B/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO>

OSSBucket許可權

使用者建立的Bucket總共有三種許可權: /*私有 * 只允許自己讀寫操作,其他使用者沒有許可權 */ CannedAccessControlList acl_private = CannedAccessControlList.Private; /*公共讀寫

QtQSettings登錄檔、配置檔案

簡述 一般情況下,我們在開發軟體過程中,都會快取一些資訊到本地,可以使用輕量級資料庫sqlite,也可以操作登錄檔、讀寫配置檔案。 關於QSettings的使用前面已經介紹過了,比較詳細,見“更多參考”,下面介紹下QSettings常用功能-讀寫登錄檔、配置檔案。 簡述 優點 讀

原創.NET平臺機器學習元件-Infer.NET連載(一)介紹

關於本文件的說明   本文件基於Infer.NET 2.6對Infer.NET User Guide進行中文翻譯,但進行了若干簡化和提煉,按照原網站的思路進行,但不侷限與其順序。   歡迎傳播分享,必須保持原作者的資訊,但禁止將該文件直接用於商業盈利。   本人正在研究基於Infer.NET元件,並

原創.NET平臺機器學習元件-Infer.NET連載(二)貝葉斯分類器

關於本文件的說明   本文件基於Infer.NET 2.6對Infer.NET User Guide進行中文翻譯,但進行了若干簡化和提煉,按照原網站的思路進行,但不侷限與其順序。   歡迎傳播分享,必須保持原作者的資訊,但禁止將該文件直接用於商業盈利。   本人正在研究基於Infer.NET元件,並

MFCVCini檔案

可以用於載入時,讀取上一次的紀錄。 一:寫ini配置檔案: //獲取exe路徑 CString strPath; GetModuleFileName(NULL,strPath.GetBufferSetLength(MAX_PATH+1),M

delphitxt檔案

1. memo控制元件讀取txt memo1.Lines.LoadFromFile('E:/*/*.txt'); 2. Procedure NewTxt(FileName:String); Var F : Textfile; Begin if fileExists(Fil

原創.NET中Trace類和Debug類的應用舉例

  .NET中Trace類和Debug類的應用舉例 .NET中的Trace類和Debug類是System.Diagnostics名稱空間下的兩個用於除錯的類,在軟體開發中使用得當,可以幫助我們除錯開發程式,提高效率,很有用。其中,Debug類僅在除錯版本中有效,而Trace

轉載ReentrantReadWriteLock鎖的使用

Lock比傳統執行緒模型中的synchronized方式更加面向物件,與生活中的鎖類似,鎖本身也應該是一個物件。兩個執行緒執行的程式碼片段要實現同步互斥的效果,它們必須用同一個Lock物件。   讀寫鎖:分為讀鎖和寫鎖,多個讀鎖不互斥,讀鎖與寫鎖互斥,這是由jvm自己控制的

原創新韭菜日記2---人性的缺點1:為什麼總是急著賣漲的,而捨不得割肉?

心理學書上寫的 為什麼總是急著賣漲的,而捨不得割肉? 前提情景:手上已經持股 行為模式:手上持有的股票,漲價後非常想賣                   手上持有的股票,跌價後不想割肉 心

NPOIExcelSpire.XLS for.NET元件轉換Excel為PDF

首先要引用NPOI動態庫和Microsoft.Office.Interop.excel.dll (Microsoft.Office.Interop.excel.dll  最好使用使用NuGet下載 ,或者使用網上下載,網上下載以後解壓檔案,把Microsoft.Offic