zoukankan      html  css  js  c++  java
  • C# 替换Word文本—— 用文档、图片、表格替换文本

    编辑文档时,对一些需要修改的字符或段落可以通过查找替换的方式,快速地更改。在C# 在word中查找及替换文本一文中,主要介绍了在Word中以文本替换文本的方法,在本篇文章中,将介绍如何用一篇Word文档、图片或者表格来替换文档中的指定文本字符串。示例要点如下:

    1. 用文档替换Word中的文本

    2. 用图片替换Word中的文本

    3. 用表格替换Word中的文本

    工具

    下载安装后,注意在程序中添加引用Spire.Doc.dll(如下图),dll文件可在安装路径下的Bin文件夹中获取。

    C#代码示例

    【示例1】用文档替换Word中的文本

    测试文档:

    步骤1:加载文档

    //加载源文档
    Document document = new Document("Original.docx");
    
    //加载用于替换的文档
    IDocument replaceDocument = new Document("test.docx");

    步骤2:用文档替换文本

    document.Replace("History", replaceDocument, false, true);

    步骤3:保存文档

    document.SaveToFile("result.docx", FileFormat.Docx2013);

    替换结果:

    全部代码:

    using Spire.Doc;
    using Spire.Doc.Interface;
    
    namespace ReplaceTextWithDocument_Doc
    {
        class Program
        {
            static void Main(string[] args)
            {
                //加载源文档
                Document document = new Document("Original.docx");
    
                //加载用于替换的文档
                IDocument replaceDocument = new Document("test.docx");
    
                //用文档替换源文档中的指定文本
                document.Replace("History", replaceDocument, false, true);
    
                //保存文档
                document.SaveToFile("result.docx", FileFormat.Docx2013);
                System.Diagnostics.Process.Start("result.docx");
            }
        }
    }
    View Code

    【示例2】用图片替换Word中的文本

    测试文档:

    步骤1:加载文件

    //实例化Document类的对象,并加载测试文档
    Document doc = new Document();
    doc.LoadFromFile("testfile.docx");
    //加载替换的图片
    Image image = Image.FromFile("g.png");

    步骤2:查找需要替换掉的文本字符串

    //获取第一个section
    Section sec= doc.Sections[0];
    
    //查找文档中的指定文本内容
    TextSelection[] selections = doc.FindAllString("Google", true, true);
    int index = 0;
    TextRange range = null;

    步骤3:用图片替换文本

    //遍历文档,移除文本内容,插入图片
    foreach (TextSelection selection in selections)
    {
        DocPicture pic = new DocPicture(doc);
        pic.LoadImage(image);
        range = selection.GetAsOneRange();
        index = range.OwnerParagraph.ChildObjects.IndexOf(range);
        range.OwnerParagraph.ChildObjects.Insert(index, pic);
        range.OwnerParagraph.ChildObjects.Remove(range);
    }

    步骤4:保存文档

    doc.SaveToFile("result.docx", FileFormat.Docx);

    替换结果:

    全部代码:

    using Spire.Doc;
    using Spire.Doc.Documents;
    using Spire.Doc.Fields;
    using System.Drawing;
    
    namespace ReplaceTextWithImg_Doc
    {
        class Program
        {
            static void Main(string[] args)
            {
                //实例化Document类的对象,并加载测试文档
                Document doc = new Document();
                doc.LoadFromFile("testfile.docx");
                //加载替换的图片
                Image image = Image.FromFile("g.png");
    
                //获取第一个section
                Section sec= doc.Sections[0];
    
                //查找文档中的指定文本内容
                TextSelection[] selections = doc.FindAllString("Google", true, true);
                int index = 0;
                TextRange range = null;
    
                //遍历文档,移除文本内容,插入图片
                foreach (TextSelection selection in selections)
                {
                    DocPicture pic = new DocPicture(doc);
                    pic.LoadImage(image);
                    range = selection.GetAsOneRange();
                    index = range.OwnerParagraph.ChildObjects.IndexOf(range);
                    range.OwnerParagraph.ChildObjects.Insert(index, pic);
                    range.OwnerParagraph.ChildObjects.Remove(range);
                }
    
                //保存文档
                doc.SaveToFile("result.docx", FileFormat.Docx);
                System.Diagnostics.Process.Start("result.docx");
            }
        }
    }
    View Code

    【示例3】用表格替换Word中的文本

    测试文档:

     

    步骤1:加载文档

    Document doc = new Document();
    doc.LoadFromFile("test.docx");

    步骤2:查找关键字符串

    Section section = doc.Sections[0];
    TextSelection selection = doc.FindString("参考附录", true, true);

    步骤3:获取关键字符串所在段落的索引

    TextRange range = selection.GetAsOneRange();
    Paragraph paragraph = range.OwnerParagraph;
    Body body = paragraph.OwnerTextBody;
    int index = body.ChildObjects.IndexOf(paragraph);

    步骤4:添加表格

    Table table = section.AddTable(true);
    table.ResetCells(2, 3);
    range = table[0, 0].AddParagraph().AppendText("管号(McFarland)");
    range = table[0, 1].AddParagraph().AppendText("0.5");
    range = table[0, 2].AddParagraph().AppendText("1");
    range = table[1, 0].AddParagraph().AppendText("0.25%BaCl2(ml)");
    range = table[1, 1].AddParagraph().AppendText("0.2");
    range = table[1, 2].AddParagraph().AppendText("0.4");

    步骤5:移除段落,插入表格

    body.ChildObjects.Remove(paragraph);
    body.ChildObjects.Insert(index, table);

    步骤6:保存文档

    doc.SaveToFile("result.doc", FileFormat.Doc);

    替换结果:

    全部代码:

    using Spire.Doc;
    using Spire.Doc.Documents;
    using Spire.Doc.Fields;
    
    
    namespace ReplaceTextWithTable_Doc
    {
        class Program
        {
            static void Main(string[] args)
            {
                //实例化Document类的对象,并加载测试文档
                Document doc = new Document();
                doc.LoadFromFile("test.docx");
    
                //查找关键字符串文本
                Section section = doc.Sections[0];
                TextSelection selection = doc.FindString("参考附录", true, true);
    
                //获取关键字符串所在的段落
                TextRange range = selection.GetAsOneRange();
                Paragraph paragraph = range.OwnerParagraph;
                Body body = paragraph.OwnerTextBody;
                int index = body.ChildObjects.IndexOf(paragraph);
    
                //添加一个两行三列的表格
                Table table = section.AddTable(true);
                table.ResetCells(2, 3);
                range = table[0, 0].AddParagraph().AppendText("管号(McFarland)");
                range = table[0, 1].AddParagraph().AppendText("0.5");
                range = table[0, 2].AddParagraph().AppendText("1");
                range = table[1, 0].AddParagraph().AppendText("0.25%BaCl2(ml)");
                range = table[1, 1].AddParagraph().AppendText("0.2");
                range = table[1, 2].AddParagraph().AppendText("0.4");
    
                //移除段落,插入表格 
                body.ChildObjects.Remove(paragraph);
                body.ChildObjects.Insert(index, table);
    
                //保存文档
                doc.SaveToFile("result.doc", FileFormat.Doc);
                System.Diagnostics.Process.Start("result.doc");
                 
            }
        }
    }
    View Code

    以上是本次关于“C# 用文档、图片、表格替换Word中的文本字符串的”的全部内容。

    (本文完)

  • 相关阅读:
    Codeforces 877 C. Slava and tanks
    Codeforces 877 D. Olya and Energy Drinks
    2017 10.25 NOIP模拟赛
    2017 国庆湖南 Day1
    UVA 12113 Overlapping Squares
    学大伟业 国庆Day2
    51nod 1629 B君的圆锥
    51nod 1381 硬币游戏
    [JSOI2010]满汉全席
    学大伟业 2017 国庆 Day1
  • 原文地址:https://www.cnblogs.com/twodog/p/12135545.html
Copyright © 2011-2022 走看看