日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Spire.Office组件使用例子

發布時間:2023/12/31 综合教程 32 生活家
生活随笔 收集整理的這篇文章主要介紹了 Spire.Office组件使用例子 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

用.NET開發程序通常要涉及到對Office文件讀寫操作,比較常見的操作比如提取文本,導出Excel格式數據,動態生成word文檔,生成pdf文檔等。

實現這些功能通常需要在服務端安裝office軟件,然后通過調用com組件或者oledb的方式訪問數據,這是比較重的使用方式,畢竟需要在服務器上安裝一個office軟件。

相對比較輕量級的是使用OpenXML,需要遵循OpenXML文檔規范,動態生成對應格式的xml文件。OpenXML相對比較基礎,需要較深入的學習相關的API。

為了簡化相關功能開發,最近了解到一款提供給開發人員使用的Office編程組件——Spire.Office,其API接口有點類似于OpenXML,同樣也是不需要安裝office軟件,但是提供更加簡便的實現方式。

這個組件涵蓋了Office開發中涉及的大部分功能點,涵蓋了對Word、Excel、PPT、PDF等文件的讀寫、編輯、查看功能,同時也提供了條形碼生成和掃描的功能,整體功能比較完整,在office開發領域這塊看起來無所不能。

官方網站提供了非常詳細的文檔說明以及使用Demo,難得看到這么詳盡的API文檔介紹,非常用心的一款產品,詳情可點擊查看http://www.e-iceblue.com/Tutorials.html

引入方式

引入該組件的方式可以通過下載完整安裝包(http://www.e-iceblue.com/downloads/pack/spire.office_2.13.zip)或者通過nuget的方式引用。

個人比較偏向于使用nuget包,在nuget上搜索Spire會列出大概有22個結果,其中第一個package,Spire.Office for .NET是一個完整的組件包,包含了Spire.Office組件的所有功能,當然文件大小也是很大的。

后面的包是針對單個功能的,適用于只需要用到某個功能的情景。

使用例子

為了方便演示,這里直接引用了Spire.Office for .NET包,整體大小在88MB左右,下載packages有點慢

Install-Package Spire.Office

下面針對三個常用功能,學習如何使用Spire.Office組件。

一、文本提取

通常我們在做一些文檔索引或者文檔解析的時候,需要得到文檔的純文本內容,這樣便于對不同格式的文檔進行通用的處理。最常見的就是將文檔內容作為索引提交的搜索引擎,從而實現對不同格式文檔的搜索。

通過Spire.Office的Doc和Pdf組件能比較方便的抽取文檔的文本,需要用到以下兩個組件

Spire.Doc

Spire.Pdf

demo界面

抽取Word文檔

以下代碼是加載一個文件流,這個示例是讀取上傳的文件流,然后遍歷文檔的每個section,再遍歷每個section下的Paragraph,讀取里面的文本,得到最終的文檔文本內容。

using (var document = new Document(fileStream)) 
            { 
                // 提取每個段落的文本 
                var sb = new StringBuilder(); 
                foreach (Section section in document.Sections) 
                { 
                    foreach (Paragraph paragraph in section.Paragraphs) 
                    { 
                        sb.AppendLine(paragraph.Text); 
                    } 
                } 
                return sb.ToString(); 
            }

下圖是用于提取的doc文檔以及提取后純文本內容

(word原文) (抽取后的原文)

抽取Pdf文檔

類似于Word文檔抽取,代碼直觀明了,加載文件流,然后遍歷每一頁,提取文本。

using (var document = new PdfDocument()) 
           { 
               document.LoadFromStream(fileStream); 
               var sb = new StringBuilder(); 
               foreach (PdfPageBase page in document.Pages) 
               { 
                   sb.AppendLine(page.ExtractText()); 
               } 
               return sb.ToString(); 
           } 

ExtractPdf

下圖是用于提取的pdf文檔以及提取后純文本內容

(pdf原文) (抽取后的文本)

二、導出Excel數據

導出Excel也是開發中經常遇到的爛大街功能,初期使用過response直接寫csv文件,之后用上了專業的組件比如NPOI,現在用Spire.Xls組件來看看效果如何。

demo界面,為了方便演示,直接讓用戶提交數據庫連接字符串和查詢語句,然后導出Excel文件

關鍵代碼

大概步驟就是,創建一個Workbook,然后將從數據庫得到的DataTable插入到shee中,幾行代碼比較便捷的得到包含數據的Excel文件

using (var book = new Workbook()) 
           { 
               var sheet = book.Worksheets[0]; 
               // 這里只是返回一個DataTable 
               DataTable dataTable = GetData(model.ConnectionString, model.SelectClause); 
               // 在第一行第一列插入數據表 
               sheet.InsertDataTable(dataTable, true, 1, 1); 
               sheet.Name = dataTable.TableName; 
               var ms = new MemoryStream(); 
               book.SaveToStream(ms, FileFormat.Version97to2003); 
               ms.Position = 0; 
               return File(ms, "application/vnd.ms-excel", sheet.Name + ".xls"); 
           }

ExportExcel

導出的文件效果

導出Excel文檔效果(基于[AdventureWorks2014].[Production].[Product]表)

由于用的是評估版,所以導出的Excel最后一個sheet是一些試用提示信息

三、生成文檔

文檔生成通常用于動態從數據庫讀取一些變化的數據,然后套用某個模板將數據填入,最終生成看起來一個有模有樣的文檔,通常是那種八股文。曾經做個簡歷導出,就是用的類似的方式,實現將同一份數據導出成不同的文檔格式。

這里使用Spire.Doc和Spire.Pdf兩大組件,實現創建word和pdf文檔的功能

demo界面,通過輸入文檔標題,文檔名,若干個文檔段落生成文檔

關鍵代碼

實現過程有點類似于文本抽取的逆向操作

創建Word文檔

依次設置標題以及各個段落的內容

using (var document = new Document()) 
            { 
                Section section = document.AddSection();

                var titleParagraph = section.AddParagraph(); 
                titleParagraph.AppendText(model.Title); 
                titleParagraph.Format.HorizontalAlignment = HorizontalAlignment.Center;

                foreach (var paragraph in model.Paragraphs) 
                { 
                    Paragraph para = section.AddParagraph(); 
                    para.AppendText(paragraph); 
                } 
                var ms = new MemoryStream(); 
                document.SaveToStream(ms, Spire.Doc.FileFormat.Docx); 
                ms.Position = 0; 
                return File(ms, "application/msword", model.FileName + ".docx"); 
            }

CreateWord

生成文檔效果,由于是評估版,還是被硬生生的插入了一段提示,并且生成的word文檔不能編輯(付費后應該是可以編輯的)

創建Pdf文檔

創建過程類似于使用canvas畫板,生成一個簡單文檔還不算復雜

using (var document = new PdfDocument()) 
            { 
                PdfPageBase page = document.Pages.Add(); 
                var font = new PdfFont(PdfFontFamily.Helvetica, 13f); 
                var brush = PdfBrushes.Black; 
                var location = new PointF(20, 20); 
                page.Canvas.DrawString(model.Title, font, brush, location);

                foreach (var paragraph in model.Paragraphs) 
                { 
                    location.Y += 10; 
                    page.Canvas.DrawString(paragraph, font, brush, location); 
                }

                var ms = new MemoryStream(); 
                document.SaveToStream(ms, Spire.Pdf.FileFormat.PDF); 
                ms.Position = 0; 
                return File(ms, "application/pdf", model.FileName + ".pdf"); 
            }

CreatePdf

生成文檔效果,同樣也是毫無違和感的被插入了評估版的提示。這里看到使用的是英文內容,因為目前測試評估版輸入中文生成文檔會顯示為亂碼,還沒找到設置編碼的方式

完整代碼下載

小結

這個組件還是能覆蓋到我們日常開發涉及到調用Office的功能,基于這個組件的API還能做更多高級的文檔操作功能,實現對office文檔進行一些深度的開發時不成問題的。

免費版的目前也就僅僅夠體驗一下,付費后的功能會強大很多,但是付費版的性價比不是很高,具體收費可以到官網查看

總結

以上是生活随笔為你收集整理的Spire.Office组件使用例子的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。