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

  • 相关阅读:
    Oracle11g新建用户及用户表空间
    PLSQL连接oracle12c
    Zabbix微信报警脚本及写触发记录
    使用document.select(Jquery Css selector) selector:看jsoup文档来敲案例学习 selector选择器
    仙女打卡day1
    XML的解析(读取),附带源码与运行效果图 (day01)
    [Luogu] P7077 函数调用
    [Luogu] P5815 [CQOI2010]扑克牌
    [Luogu] CF364D Ghd
    [Luogu] P4823 [TJOI2013]拯救小矮人
  • 原文地址:https://www.cnblogs.com/liqingwen/p/5898368.html
Copyright © 2020-2023  润新知