[.NET] 操作 Word 組件 - Spire.Doc 介紹

来源:http://www.cnblogs.com/liqingwen/archive/2016/09/23/5898368.html
-Advertisement-
Play Games

操作 Word 組件 - Spire.Doc 介紹 【博主】反骨仔 【原文地址】http://www.cnblogs.com/liqingwen/p/5898368.html 序 本打算過幾天簡單介紹下組件 Spire.XLS,突然發現園友率先發佈了一篇,既然 xls 已經出現,為避免打上抄襲嫌疑, ...


開頭不講"Hello Word",讀盡詩書也枉然 : Word 操作組件介紹 - Spire.Doc 

【博主】反骨仔  【原文地址】http://www.cnblogs.com/liqingwen/p/5898368.html

  本打算過幾天簡單介紹下組件 Spire.XLS,突然發現園友率先發佈了一篇,既然 xls 已經出現,為避免打上抄襲嫌疑,博主只能搶先一步使用 Spire.Doc 簡單介紹 Doc 操作,下麵是通過 WinForm 程式執行代碼完成介紹的。

  本機環境:Win10 x64、VS 2015、MS Office 2016。

 

目錄

 

介紹

   這是 E-iceblue 公司開發的其中一個組件 Spire.Doc,它專門為開發人員進行創建,讀取,寫入、轉換列印 word 文檔文件提供便利,並且,它不需要你安裝 MS Office,就可以對 word 進行操作。這裡使用的是免費版進行演示。

圖1 官方截圖

圖2 版本間的功能的差異

 

 

一、NuGet 包安裝 Dll 引用文件

圖1-1 打開 NuGet 包管理器

圖1-2 安裝完後會多 3 個引用文件

 

二、開頭不講“Hello World”,讀盡詩書也枉然

  1.先創建個空白的“demo1.docx”文件

圖2-1

  2.隨便寫幾句代碼

 1     public partial class Form1 : Form
 2     {
 3         public Form1()
 4         {
 5             InitializeComponent();
 6         }
 7 
 8         private void button1_Click(object sender, EventArgs e)
 9         {
10             //打開 word 文檔
11             var document = new Document(@"demo1.docx",FileFormat.Docx);
12 
13             //取第一部分
14             var section = document.Sections[0];
15 
16             //取第一個段落
17             var paragraph = section.Paragraphs[0];
18 
19             //追加字元串
20             paragraph.AppendText("Hello World!");
21 
22             //保存為 .docx 文件
23             const string fileName = @"demo1-1.docx";
24             document.SaveToFile(fileName, FileFormat.Docx);
25 
26             //啟動該文件
27             Process.Start(fileName);
28         }
29     }

圖

圖 2-2 效果圖

   【備註】別忘了引入命名空間哦: using Spire.Doc;

 

  上面是向一個空的 word 文檔加上“Hello World!”,這次換成直接創建一個新的包含“Hello World!”內容的文檔。當然效果跟圖 2-2 一樣。

 1         private void button1_Click(object sender, EventArgs e)
 2         {
 3             //創建 word 文檔
 4             var document = new Document();
 5 
 6             //創建新的部分
 7             var section = document.AddSection();
 8 
 9             //創建新的段落
10             var paragraph = section.AddParagraph();
11 
12             //追加字元串
13             paragraph.AppendText("Hello World!");
14 
15             //保存為 .doc 文件
16             const string fileName = @"demo1-1.doc";
17             document.SaveToFile(fileName, FileFormat.Doc);
18 
19             //啟動該文件
20             Process.Start(fileName);
21         }

 

三、文檔內容檢索與替換

  1.內容檢索

  先在“demo2.docx”中搞了篇《琵琶行》,啟動時在文本框中輸入“此時無聲勝有聲”進行檢索。

 1         private void button1_Click(object sender, EventArgs e)
 2         {
 3             //載入 demo2.docx
 4             var document = new Document(@"demo2.docx", FileFormat.Docx);
 5 
 6             //查找所有匹配的字元串
 7             TextSelection[] textSelections = document.FindAllString(this.textBox1.Text, false, false);
 8 
 9             //修改背景色
10             foreach (TextSelection selection in textSelections)
11             {
12                 selection.GetAsOneRange().CharacterFormat.TextBackgroundColor = Color.Gray;
13             }
14 
15             //保存文件
16             const string fileName = @"demo2-1.docx";
17             document.SaveToFile(fileName, FileFormat.Docx);
18 
19             //啟動該文件
20             Process.Start(fileName);
21         }

圖 3.1-1

 

  2.內容替換

  大家嘗試在三的基礎上簡單修改下代碼即可。

1             document.Replace(this.textBox1.Text, this.textBox2.Text,false,false);

圖3.2-1

 

四、格式化操作 - 字體、顏色、排版縮進和樣式等

  1.字體和顏色

  新建一個空白的 demo3.docx 文件。

 1         private void button1_Click(object sender, EventArgs e)
 2         {
 3             //載入 docx
 4             var document = new Document(@"demo3.docx", FileFormat.Docx);
 5 
 6             //獲取第一個部分
 7             Section section = document.Sections[0];
 8 
 9             //創建一個新的段落或者取第一個段落
10             Paragraph paragraph
11                 = section.Paragraphs.Count > 0 ? section.Paragraphs[0] : section.AddParagraph();
12 
13             //追加文本
14             const string text = "This paragraph is demo of text font and color. "
15                                 + "The font name of this paragraph is Tahoma. "
16                                 + "The font size of this paragraph is 20. "
17                                 + "The under line style of this paragraph is DotDot. "
18                                 + "The color of this paragraph is Blue. ";
19             TextRange txtRange = paragraph.AppendText(text);
20 
21             //設置字體
22             txtRange.CharacterFormat.FontName = "Tahoma";
23 
24             //設置字體大小
25             txtRange.CharacterFormat.FontSize = 20;
26 
27             //設置下劃線
28             txtRange.CharacterFormat.UnderlineStyle = UnderlineStyle.DotDot;
29 
30             //改變字體顏色
31             txtRange.CharacterFormat.TextColor = Color.Blue;
32 
33             //保存文件
34             const string fileName = @"demo3-1.docx";
35             document.SaveToFile(fileName, FileFormat.Docx);
36 
37             //啟動該文件
38             Process.Start(fileName);
39         

 圖4.1-1

 

  2.排版縮進

  取空白的 docx 文件。

 1         private void button1_Click(object sender, EventArgs e)
 2         {
 3             //載入 docx
 4             var document = new Document(@"demo3.docx", FileFormat.Docx);
 5 
 6             //獲取第一個部分
 7             Section section = document.Sections[0];
 8 
 9             //創建一個新的段落或者取第一個段落
10             Paragraph paragraph
11                 = section.Paragraphs.Count > 0 ? section.Paragraphs[0] : section.AddParagraph();
12 
13             //Append Text
14             paragraph.AppendText("這是縮進排版 Demo。");
15             paragraph.ApplyStyle(BuiltinStyle.Heading3);
16 
17             var random = new Random();
18             paragraph = section.AddParagraph();
19             for (var i = 0; i < random.Next(0, 10); i++)
20             {
21                 paragraph = section.AddParagraph();
22                 paragraph.AppendText($"I'm {i}");
23 
24                 if (i == 0)
25                 {
26                     paragraph.ListFormat.ApplyBulletStyle();
27                 }
28                 else
29                 {
30                     paragraph.ListFormat.ContinueListNumbering();
31                 }
32 
33                 paragraph.ListFormat.CurrentListLevel.NumberPosition = -10;
34             }
35 
36             //保存文件
37             const string fileName = @"縮進排版.docx";
38             document.SaveToFile(fileName, FileFormat.Docx);
39 
40             //啟動該文件
41             Process.Start(fileName);
42         }

 圖4.2-1

 

  3.文本樣式

 1         private void button1_Click(object sender, EventArgs e)
 2         {
 3             //創建一個新的 word
 4             var document = new Document();
 5 
 6             //創建第一部分
 7             var section = document.AddSection();
 8 
 9             //創建第一個段落
10             var paragraph = section.AddParagraph();
11 
12             //追加字元串
13             paragraph.AppendText("Builtin Style:");
14 
15             foreach (BuiltinStyle builtinStyle in Enum.GetValues(typeof(BuiltinStyle)))
16             {
17                 paragraph = section.AddParagraph(); //增加段落
18 
19                 paragraph.AppendText(builtinStyle.ToString());  //追加文本
20 
21                 paragraph.ApplyStyle(builtinStyle); //應用樣式
22             }
23 
24             const string fileName = "Style.docx";
25             document.SaveToFile(fileName, FileFormat.Docx); //保存文件
26 
27             Process.Start(fileName);    //啟動
28         }

圖4.3-1

 

小結

  以上只是幾個小小的 Demo,當然,Spire.Doc 的強大遠遠不止如此。你使用該組件時所遇到的困難,我們可以共同來探討哦。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、硬碟安裝Windows10準備工作:1、首先下載硬碟安裝工具nt6 hdd installernt6 hdd installer是一款硬碟安裝系統工具,用戶無需藉助光碟機、U盤,可以直接在現有的系統中,直接安裝系統。 下載地址:http://222.76.215.233:81/soft/nt6hd ...
  • 最近把系統升級到 ubuntu16長期支持版 ,重新部署了lnmp環境 約定幾個目錄 源碼目錄 /usr/local/src mysql /usr/local/mysql php /usr/local/php nginx /usr/local/nginx mysql 版本 5.7.14 必備的包和工 ...
  • 上一篇我們已經成功將 ARM Linux 4.7.3 的內核利用 U-BOOT 引導了起來。但是細心的你會發現,引導到後面,系統無法啟動,出現內核恐慌 (Kernel Panic)。 原因是找不到文件系統。為了讓內核成功啟動,我們還需要構建一個根文件系統。為了後期開發的方便,我們採用 NFS 網路文 ...
  • 經過若幹天的反覆測試,搜索。終於成功利用 Qemu 在 u-boot 下引導 ARM Linux 4.7.3 內核。如下詳細解釋整個構建過程。 準備環境 運行環境:Ubuntu 16.04 需要的虛擬機:Qemu 交叉編譯環境:ARM GCC 內核源碼:Linux 4.7.3 u-boot源碼:u- ...
  • 一. 源碼安裝程式 很多軟體產品是以源碼包方式發佈,如果只會用RPM命令就只能去尋找到由第三方組織或黑客們編寫的RPM軟體包後才能安裝程式了,而源碼程式的可移植性非常好,可以針對不同的系統架構而正確運行,但RPM軟體包則必需嚴格符合限制使用的平臺和架構後才能順利安裝,所以建議即便在工作中可以很舒服的 ...
  • Yii2 腳本手動執行可以,計劃任務執行不成功,這是由於Yii腳本裡面PHP環境設置不對所引起的... ...
  • 使用源碼包安裝的Nginx沒辦法使用"service nginx start"或"/etc/init.d/nginx start"進行操作和控制,所以寫了以下的服務控制腳本。 可以使用的選項有: start 啟動 stop 停止 reload 重載 restart 重啟 status 狀態 test ...
  • 之前的介紹中,我們用到了Button、Static Text、Checkbox這三個控制項。這一節中我們將學習使用Edit Control(編輯框)、Combo Box控制項,其中還包括Unicode轉ANSI的方法、創建Open File Dialog、 讀取文件、可變參數(這裡用於生成日誌)、文本框... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...