向Word模板中填充数据

现在有这样的需求,给Word文档的指定位置填充上特定数据,例如我们有一个终端,用来打印员工的薪资证明,对于一个公司来说,他的薪资证明模板是固定的,变化的地方是员工姓名,部门,职位等。我们只需要将这些指定数据填写到指定位置即可。

1. 制作Word模板,

在Word中,有一个东东叫书签,我们可以在需要填充的地方预先插入特定名称的书签。

2. 在指定的Bookmark位置写入特定数据:

    MSWord.Application app = new MSWord.Application();

    string destPath = "薪资证明.docx";

    string targetPath = System.IO.Path.Combine(Directory.GetCurrentDirectory(), destPath);

    MSWord.Document doc = app.Documents.Open(targetPath, Visible:false);

    MSWord.Bookmark bmName = doc.Bookmarks.OfType<MSWord.Bookmark>().First(bm => bm.Name == "Bookmark_Name");

    if(bmName != null)
    {
        bmName.Range.Text = "Tom Wang";
    }

    MSWord.Bookmark bmDept = doc.Bookmarks.OfType<MSWord.Bookmark>().First(bm => bm.Name == "Bookmark_Department");

    if(bmDept != null)
    {
        bmDept.Range.Text = "Department";
    }

    MSWord.Bookmark bmJob = doc.Bookmarks.OfType<MSWord.Bookmark>().First(bm => bm.Name == "Bookmark_Job");

    if(bmJob != null)
    {
        bmJob.Range.Text = "Software engineer";
    }

    MSWord.Bookmark bmSalary = doc.Bookmarks.OfType<MSWord.Bookmark>().First(bm => bm.Name == "Bookmark_Salary");

    if(bmSalary != null)
    {
        bmSalary.Range.Text = "10000";
    }

    MSWord.Bookmark bmDate = doc.Bookmarks.OfType<MSWord.Bookmark>().First(bm => bm.Name == "Bookmark_Date");

    if(bmDate != null)
    {
        bmDate.Range.Text = DateTime.Now.ToShortDateString();
    }

    doc.Save();

    doc.Close();

    Marshal.ReleaseComObject(doc);

    Marshal.ReleaseComObject(app);

运行程序,可以将需要的数据插入指定位置。

感谢您的阅读。

时间: 2024-12-11 01:52:05

向Word模板中填充数据的相关文章

[原创]java向word模板中填充数据(总结)

使用过PageOffice动态生成word文档的人都知道,PageOffice可以给word文档的指定位置进行填充,这里我们所说的指定位置在PageOffice的专业术语里面有两个概念,一个叫做数据区域(DataRegion),另一个叫做数据标签(DataTag). 一. 概念 数据区域:是Word文档中具有 "PO_" 前缀命名的书签所定位的文档区域.简单来说,数据区域就是一种特殊的Word书签对象,便于定位Word文档中的内容. 数据标签:是任意的有效字符组成的特殊样式的字符串(如

如何使用免费控件将Word表格中的数据导入到Excel中

我通常使用MS Excel来存储和处理大量数据,但有时候经常会碰到一个问题—我需要的数据存储在word表格中,而不是在Excel中,这样处理起来非常麻烦,尤其是在数据比较庞大的时候, 这时我迫切地需要将word表格中的数据导入到Excel中.相信大家也碰到过同样的问题,下面我就给大家分享一下在C#中如何使用免费控件来实现这一功能.这里,我使用了两个免费API, DocX和Spire.Xls. 有需要的朋友可以下载使用.下载地址: DocX:codeplex官网 Spire.Xls: E-iceb

js使用模板快速填充数据

1.html <!DOCTYPE html> <html> <head> <title>模板标签</title> </head> <body> <table id="tableData"> <tr class="firstLine"> <th></th> <th>图片</th> <th>图片名称<

asp.net读取execl模板并填充数据,关闭进程

<head runat="server"> <title></title> <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> <script src="Scripts/jquery-1.4.1.js" type="text/javascript"

依据word模板批量生成试卷

java-word-MassProduction 目录 使用方法 开发流程 一.使用方法 1.制造题库所需Word模板 需要填充数据的地方使用 ${pid} 代替. 将这个word选择另存为,保存格式选择为xml,然后将这个xml放到项目的ftl目录下,后缀名改为.ftl . 2.配置数据库 项目中使用了hibernate,表结构可以自动生成,但前提得先有mysql数据库环境且创建好数据库,数据库连接信息可以在hibernate.hbm.xml中修改. 对应上面模板实例中的${pid}值,在对应

java使用Aspose向word模板写入数据

Aspose.Words是一个商业.NET类库,可以使得应用程序处理大量的文件任务.Aspose.Words支持Doc,Docx,RTF,HTML,OpenDocument,PDF,XPS,EPUB和其他格式.使用Aspose.Words可以在不使用Microsoft.Word的情况下生成.修改.转换和打印文档. 1.Aspose在maven下的包引用,例如: <dependency> <groupId>com.mlsc</groupId> <artifactId

利用模板导出文件(二)之jacob利用word模板导出word文件(Java2word)

先下载jacob.jar包. 解压后将jacob.dll放到windows/system32以下或\jre\bin以下. 将jacob.jar增加项目. 这样项目的环境基本上搭建完毕,接下来就是书写相关的代码: /** * 传入数据为HashMap对象,对象中的Key代表word模板中要替换的字段.Value代表用来替换的值. * word模板中全部要替换的字段(即HashMap中的Key)以特殊字符开头和结尾. * 如:$code$.$date$--.以免执行错误的替换. * 全部要替换为图片

十步优化SQL Server中的数据访问(转载)

原文地址:http://tech.it168.com/a2009/1125/814/000000814758.shtml 故事开篇:你和你的团队经过不懈努力,终于使网站成功上线,刚开始时,注册用户较少,网站性能表现不错,但随着注册用户的增多,访问速度开始变慢,一些用户开始发来邮件表示抗议,事情变得越来越糟,为了留住用户,你开始着手调查访问变慢的原因. 经过紧张的调查,你发现问题出在数据库上,当应用程序尝试访问/更新数据时,数据库执行得相当慢,再次深入调查数据库后,你发现数据库表增长得很大,有些表

C#,WPF使用word模板导出word文档

使用word模板导出word文档,首先需要在word模板中插入书签: 根据创建的书签名和位置,将需要写入的内容插入到word文件中. 需要引用  Microsoft.Office.Interop.Word;在添加引用-程序集中搜索可以找到. using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Windows; usin