Wrod文档根据自定义特殊插入数据
1.根据wrod模板中指定标记替换对应数据。生产新的word文档
2.我这里演示都是固定数据-很多异常验证暂时没写。
3.需要引入 Aspose.Words.dll
1.
//获取文件路径--模板文件
string FilePath = "F:\\NetProject\\WebFile\\1.doc";
//生产后的文件路径-生产后的文件路径以及名字 可自定义。
string physicspath = "F:\\NetProject\\NewFIle\\2.docx";`
Document doc = new Document(FilePath);//程序加载指定doc文件。当doc文件被使用或者打开 这里会抛出异常。自行捕获
DocumentBuilder builder = new DocumentBuilder(doc);
DocumentBuilder是一个用来操作Document的很强大的类。它提供了一系列的方法,方便你插入文本、段落、列表、表格、图片和其他内容。使用它有点类似于使用java的StringBuilder。
DOM的Node能办到的事,使用DocumentBuilder也一样能办到。而且比使用dom的方式操作document的代码要少。
DocumentBuilder内部维护了一个游标Cursor,它允许你指向任何你想指向的地方。我们通过调用DocumentBuilder.MoveToXXX这个方法来指向。比方说,DocumentBuilder.MoveToDocumentStart,DocumentBuilder.MoveToField。
MoveToXXX之后,你可以通过DocumentBuilder.InsertXXX在那里插入文字,图片,书签,域或者是其他元素。比方说, DocumentBuilder.InsertField, DocumentBuilder.InsertHtml。
普通插入字符串内容
1.doc文件内容如下
使用得是邮件合并得一个域代码生成得《Test1》
using Aspose.Words;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Demo
{
class Program
{
static void Main(string[] args)
{
//获取文件路径
string FilePath = "E:\\NetProject\\WebFile\\1.doc";
//生产后的文件路径
string physicspath = "E:\\NetProject\\NewFIle\\2.docx";
Document doc = new Document(FilePath);
DocumentBuilder builder = new DocumentBuilder(doc);
Dictionary<string, string> dic = new Dictionary<string, string>();//这里可以为一个List<T> 存需要替换的标记
dic.Add("Test1", "第一段内容");
dic.Add("Test2", "第二段内容");
List<string> listfield = new List<string>(); //装标记
List<string> listvalue = new List<string>(); //装值
//将对应值装入 容器中
foreach (var item in dic)
{
listfield.Add(item.Key);
listvalue.Add(item.Value);
}
String[] fieldNames = listfield.ToArray();
Object[] fieldValues = listvalue.ToArray();
doc.MailMerge.Execute(fieldNames, fieldValues);//执行对应域标签提交
doc.MailMerge.DeleteFields();
try
{
doc.Save(physicspath, Aspose.Words.Saving.SaveOptions.CreateSaveOptions(SaveFormat.Docx));//生产Doc文件
}
catch (Exception ex)
{
Console.WriteLine("完成");
}
Console.ReadLine();
}
}
}
生成后的文件展示