zoukankan      html  css  js  c++  java
  • [.NET] 开头不讲"Hello Word",读尽诗书也枉然 : Word 操作组件介绍

    开头不讲"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 的强大远远不止如此。你使用该组件时所遇到的困难,我们可以共同来探讨哦。

  • 相关阅读:
    1442. Count Triplets That Can Form Two Arrays of Equal XOR
    1441. Build an Array With Stack Operations
    312. Burst Balloons
    367. Valid Perfect Square
    307. Range Sum Query
    1232. Check If It Is a Straight Line
    993. Cousins in Binary Tree
    1436. Destination City
    476. Number Complement
    383. Ransom Note
  • 原文地址:https://www.cnblogs.com/liqingwen/p/5898368.html
Copyright © 2011-2022 走看看