c#读取Word模板,利用书签替换内容包括表格
//生成WORD程序对象和WORD文档对象
Microsoft.Office.Interop.Word.Application appWord = new Microsoft.Office.Interop.Word.Application();
Microsoft.Office.Interop.Word.Document doc = new Document();
object miss = System.Reflection.Missing.Value; try
{
//打开模板文档,并指定doc的文档类型
//object objTemplate = System.Windows.Forms.Application.StartupPath + @"\UploadFiles\tz103.doc"; //路径一定要正确 object objTemplate = @"c:\\测试.docx"; object objDocType = WdDocumentType.wdTypeDocument; object objfalse = false; object objtrue = true; doc = (Document)appWord.Documents.Add(ref objTemplate, ref objfalse, ref objDocType, ref objtrue); //获取模板中所有的书签 Bookmarks odf = doc.Bookmarks; string[] testTableremarks = { "FirstParty", "SecondParty", "FirstPartySign", "SecondPartySign" }; string[] testTablevalues = { "嘉实多(深圳)有限公司广州分公司", "广州嘉通", "嘉实多(深圳)有限公司广州分公司", "广州嘉通贸易有限公司" }; //循环所有的书签,并给书签赋值 for (int oIndex = ; oIndex < testTableremarks.Length; oIndex++)
{ object obDD_Name = ""; obDD_Name = testTableremarks[oIndex]; //doc.Bookmarks.get_Item(ref obDD_Name).Range.Text = p_TestReportTable.Rows[0][testTablevalues[oIndex]].ToString();//此处Range也是WORD中很重要的一个对象,就是当前操作参数所在的区域 odf.get_Item(ref obDD_Name).Range.Text = testTablevalues[oIndex]; } //附件,插入表格
//这里简单生成样例数据表,工作中要以实际的数据集为准
System.Data.DataTable dt = new System.Data.DataTable();
dt.Columns.Add("name", typeof(string));
dt.Columns.Add("age", typeof(string)); DataRow dr = dt.NewRow();
dr["name"] = "姓名"; dr["age"] = "年龄";
dt.Rows.Add(dr); dr = dt.NewRow();
dr["name"] = "张三"; dr["age"] = "";
dt.Rows.Add(dr); dr = dt.NewRow();
dr["name"] = "李四"; dr["age"] = "";
dt.Rows.Add(dr); //附件一
object obAttachMent = "Attachment1";
//创建Word表格,并指定标签
Microsoft.Office.Interop.Word.Table dtWord = doc.Tables.Add(odf.get_Item(ref obAttachMent).Range, dt.Rows.Count, dt.Columns.Count); dtWord.Borders.InsideLineStyle = WdLineStyle.wdLineStyleDot;
dtWord.Borders.OutsideLineStyle = WdLineStyle.wdLineStyleDot; //循环往表格里赋值
for (int i = ; i <= dt.Rows.Count; i++)
{
for (int j = ; j <= dt.Columns.Count; j++)
{
dtWord.Rows[i].Cells[j].Range.Text = dt.Rows[i - ][j - ].ToString();
}
} //第四步 生成word,将当前的文档对象另存为指定的路径,然后关闭doc对象。关闭应用程序 object filename = "c:\\" + DateTime.Now.ToString("yyyy-MM-dd") + ".docx";//HttpContext.Current.Server.MapPath("f:\\") + "Testing_" + DateTime.Now.ToShortDateString() + ".doc";
object Password = "P@55w0rd"; //对Word文档进行加密保护,不允许编辑
if (Password !=null)
{
doc.Protect(WdProtectionType.wdAllowOnlyReading, ref objfalse, ref Password, ref miss, ref miss);
} doc.SaveAs(ref filename, ref miss, ref miss, ref miss, ref miss, ref miss,
ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss); object doNotSaveChanges = WdSaveOptions.wdDoNotSaveChanges; doc.Close(ref doNotSaveChanges, ref miss, ref miss); appWord.Application.Quit(ref miss, ref miss, ref miss); doc = null; appWord = null; MessageBox.Show("生成成功!"); System.Diagnostics.Process.Start(filename.ToString());//打开文档 }
catch (Exception)
{
doc.Close(ref miss, ref miss, ref miss);
appWord.Application.Quit(ref miss, ref miss, ref miss);
doc = null;
appWord = null;
}
c#读取Word模板,利用书签替换内容包括表格的更多相关文章
- C#操作word模板插入文字、图片及表格详细步骤
c#操作word模板插入文字.图片及表格 1.建立word模板文件 person.dot用书签 标示相关字段的填充位置 2.建立web应用程序 加入Microsoft.Office.Interop.W ...
- [转]C#操作word模板插入文字、图片及表格详细步骤
c#操作word模板插入文字.图片及表格 1.建立word模板文件 person.dot用书签 标示相关字段的填充位置 2.建立web应用程序 加入Microsoft.Office.Interop.W ...
- C#读取Word模板替换相应的字符串(标签)生成新的Word
在平常工作中,生成word的方式主要是C#读取html的模板文件处理之后保存为.doc文件,这样的好处是方便,快捷,能满足大部分的需求.不过有些特殊的需求并不能满足,如要生成的Word为一个表格,只是 ...
- 使用VBA将Excel指定单元格数据、字符串或者图表对象插入到Word模板指定书签处
准备工作: 1.首先需要提供一个word模板,并且标记好您要插入书签的位置,定义书签的命名.如图 2.模拟您要插入的Excel原始数据和图表对象 插入代码如下: Private Sub Command ...
- 使用NOPI读取Word、Excel文档内容
使用NOPI读取Excel的例子很多,读取Word的例子不多. Excel的解析方式有多中,可以使用ODBC查询,把Excel作为一个数据集对待.也可以使用文档结构模型的方式进行解析,即解析Workb ...
- POI Word 模板 文字 图片 替换
实验环境:POI3.7+Word2007 Word模板: 替换后效果: 代码: 1.入口文件 public class Test { public static void main(String[] ...
- C#读取word文档中的内容
原文地址 http://blog.csdn.net/yhrun/article/details/7674540 在使用前需要添加引用巨硬的com组件:Microsoft Word 12.0 objec ...
- 读取word模板,填充数据后导出
一.需求说明 定期生成word报告,报告中含有文本.表格.图表等元素,依次获取进行替换,保留原有样式,生成新的word文档 二.引入依赖 <dependency> <groupId& ...
- java中读取word文档里的内容
package com.cn.peitest.excel.word; import java.io.FileInputStream; import java.io.FileOutputStream; ...
随机推荐
- 【BZOJ】2212: [Poi2011]Tree Rotations
题意 给一棵\(n(1 \le n \le 200000)\)个叶子的二叉树,可以交换每个点的左右子树,要求前序遍历叶子的逆序对最少. 分析 可以发现如果交换非叶结点的左右子树,对子树内的交换无影响, ...
- Codeforces Round #157 (Div. 2) D. Little Elephant and Elections(数位DP+枚举)
数位DP部分,不是很难.DP[i][j]前i位j个幸运数的个数.枚举写的有点搓... #include <cstdio> #include <cstring> using na ...
- 纪念逝去的岁月——C++实现一个栈
1.代码 2.运行结果 1.代码 stack.cpp #include <stdio.h> #include <string.h> class ClsStack { priva ...
- SQL常用语句总结
-------查询一个表有多少列select count(*) from sysobjects a join syscolumns bon a.id=b.idwhere a.name='XXX' -- ...
- 可能碰到的iOS笔试面试题(4)--C语言
可能碰到的iOS笔试面试题(4)--C语言 可能碰到的iOS笔试面试题(4)--C语言 C语言,开发的基础功底,iOS很多高级应用都要和C语言打交道,所以,C语言在iOS开发中的重要性,你懂的.里面的 ...
- C++ substr() 和 Java substring() 区别
Java和C++中都有关于子字符串的操作,C++中是substr(),Java中是substring(),两者的用法上稍有些区别,首先针对只有一个参数的情况: s.substr(start) 和 s. ...
- Hadoop.2.x_源码编译
一.基本环境搭建 1. 准备 hadoop-2.5.0-src.tar.gz apache-maven-3.0.5-bin.tar.gz jdk-7u67-linux-x64.tar.gz proto ...
- hdu Tempter of the Bone
很典型的dfs题,但是涉及到很多的剪枝 . 奇偶剪枝: 是数据结构的搜索中,剪枝的一种特殊小技巧. 现假设起点为(sx,sy),终点为(ex,ey),给定t步恰好走到终点, s | ...
- js 时间格式化 -- 时间加减实现
时间格式化的方法: Date.prototype.Format = function (fmt) { //author: meizz var o = { "M+": this.ge ...
- Linux下JDK安装笔记
环境说明: Linux版本: CentOS6.2 JDK:jdk-7u60-linux-x64.tar.gz 1.下载jdk-7u60-linux-x64.tar.gz,本人是放到了~/工具 目录 ...