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; ...
随机推荐
- ACM: I Hate It 解题报告 - 线段树
I Hate It Time Limit:3000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status Des ...
- js,html,css注释大集合
1.js注释: 单行注释,在注释内容前加符号 “//” <script type="text/javascript"> document.write("单行注 ...
- 【bzoj1455】罗马游戏 可并堆
2016-05-31 10:04:41 可并堆的裸题. 左偏树(小根堆为例 性质 1.满足堆的性质,每个节点权值小于左右儿子权值 2.每个节点有dis值,表示子树最浅的叶子深度加1 3.左子树dis ...
- Timestame类型和String 类型的转化
Timestame类型和String 类型的转化 String转化为Timestamp: SimpleDateFormat df = new SimpleDateFormat("yyyy-M ...
- Servlet处理get请求时的中文乱码问题
我们都知道,使用Servlet处理get请求时,如果get请求的参数中有中文,直接接收会是乱码,这个时候我们使用类似下面的语句来处理乱码: 12345 String name = request.ge ...
- 纪念逝去的岁月——C/C++冒泡排序
冒泡排序 代码 #include <stdio.h> void printList(int iList[], int iLen) { ; ; i < iLen; i++) { pri ...
- (转)如何将数据库从SQL Server迁移到MySQL
一.迁移Database Schema. 首 先使用Sybase Powerdesigner的逆向工程功能,逆向出SQL Server数据库的物理模型.具体操作是在Powerdesigner中选择“F ...
- jsp页面价格
<div class='flo_left'> <h2 class='red'>订货价¥${productEntity.agentsPrice}</h2> <h ...
- jquery插件之表格隔行变色并鼠标滑过高亮显示
该插件乃本博客作者所写,目的在于提升作者的js能力,也给一些js菜鸟在使用插件时提供一些便利,老鸟就悠然地飞过吧. 此插件旨在实现表格隔行变色,且鼠标移动在表格的某一行上时,该行能高亮显示.整体代码如 ...
- - dequeueReusableCellWithIdentifier:
与之对应的还有一个方法: - dequeueReusableCellWithIdentifier:forIndexPath: 1 > - dequeueReusableCellWithIdent ...