1.建立word模板文件 person.dot
用书签 标示相关字段的填充位置

2.建立web应用程序 加入Microsoft.Office.Interop.Word引用
具体添加引用请参看
http://www.microsoft.com/china/msdn/library/office/office/OfficePrIntopAssFAQ.mspx?mfr=true

3.相关示例代码

protected void CreateReport_Click(object sender, EventArgs e)
        {
            Microsoft.Office.Interop.Word.Application appWord = null;//应用程序
            Microsoft.Office.Interop.Word.DocumentClass doc = null;//文档
            try
            {
                appWord = new Microsoft.Office.Interop.Word.Application();
                appWord.Visible = false;
                object objTrue = true;
                object objFalse = false;
                object objTemplate = Server.MapPath("person.dot");//模板路径
                object objDocType = WdDocumentType.wdTypeDocument;
                doc = (DocumentClass)appWord.Documents.Add(ref objTemplate, ref objFalse, ref objDocType,ref objTrue);
                //第一步生成word文档
                //定义书签变量
                object obDD_Name = "bm_Name";//姓 名
                object obDD_Sex = "bm_Sex";//性 别
                object obDD_Birthday = "bm_Birthday"; //出生年月
                object obpic="pic";
                object obtable = "obtable";
                object Nothing = System.Reflection.Missing.Value;
                //InlineShape shape = appWord.Selection.InlineShapes.AddPicture(@"F:/Picture/_DSC1602.JPG", ref Nothing, ref Nothing, ref Nothing);
                //第二步 读取数据,填充数据集
                System.Data.DataTable dt = new DataTable();
                dt.Columns.Add("p_Name");
                dt.Columns.Add("p_Sex");
                dt.Columns.Add("p_Birthday");
                DataRow dr = dt.NewRow();
                dr["p_Name"] = "张三";
                dr["p_Sex"] = "男";
                dr["p_Birthday"] = "1980-01-01";
                dt.Rows.Add(dr);

//第三步 给书签赋值
                //给书签赋值
                doc.Bookmarks.get_Item(ref obDD_Name).Range.Text = dt.Rows[0]["p_Name"].ToString(); //姓 名
                doc.Bookmarks.get_Item(ref obDD_Sex).Range.Text = dt.Rows[0]["p_Sex"].ToString();//性 别
                doc.Bookmarks.get_Item(ref obDD_Birthday).Range.Text = dt.Rows[0]["p_Birthday"].ToString();//年龄
                doc.Bookmarks.get_Item(ref obpic).Range.InlineShapes.AddPicture(@"F:/Picture/_DSC1602.JPG", ref Nothing, ref Nothing, ref Nothing);

//文档中插入表格
                //doc.Bookmarks.get_Item(ref obtable).Range.Tables.Add(doc.Bookmarks.get_Item(ref obtable).Range, 12, 3, ref Nothing, ref Nothing);
                Microsoft.Office.Interop.Word.Table newTable = doc.Tables.Add(doc.Bookmarks.get_Item(ref obtable).Range, 12, 3, ref Nothing, ref Nothing);
                newTable.Borders.OutsideLineStyle = WdLineStyle.wdLineStyleSingle;
                newTable.Borders.InsideLineStyle = WdLineStyle.wdLineStyleSingle;
                //给文档的最后一行再添加内容
                doc.Paragraphs.Last.Range.Text = "";
               
                //第四步 生成word
                object filename = Server.MapPath("~") + "//BG//" + dt.Rows[0]["p_Name"].ToString() + ".doc";
                object miss = System.Reflection.Missing.Value;
                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 missingValue = Type.Missing;
                object doNotSaveChanges = WdSaveOptions.wdDoNotSaveChanges;
                doc.Close(ref doNotSaveChanges, ref missingValue, ref missingValue);
                appWord.Application.Quit(ref miss, ref miss, ref miss);
                doc = null;
                appWord = null;

}
            catch (System.Exception ex)
            {
                //捕捉异常,如果出现异常则清空实例,退出word,同时释放资源
                string aa = ex.ToString();
                object miss = System.Reflection.Missing.Value;
                object missingValue = Type.Missing;
                object doNotSaveChanges = WdSaveOptions.wdDoNotSaveChanges;
                doc.Close(ref doNotSaveChanges, ref missingValue, ref missingValue);
                appWord.Application.Quit(ref miss, ref miss, ref miss);
                doc = null;
                appWord = null;
            }
        }

-----
以上代码在运行时 如遭遇80070005错误

解决方法一:
控制面板-》管理工具-》组件服务-》计算机-》我的电脑-》DCom配置-》找到Microsoft Word文档
之后
单击属性打开此应用程序的属性对话框。
2. 单击标识选项卡,然后选择交互式用户。
3.单击"安全"选项卡,分别在"启动和激活权限"和"访问权限"组中选中"自定义",然后
自定义->编辑->添加ASP.NET账户和IUSER_计算机名
4. 确保允许每个用户访问,然后单击确定。
5. 单击确定关闭 DCOMCNFG。

解决方法二:
如果上述方法不能解决问题,就应该是权限问题,请尝试用下面的方法:
在web.config中使用身份模拟,在<system.web>节中加入 <identity impersonate="true" userName="你的用户名

" password="密码"/>
</system.web>

参考文档:http://wenku.baidu.com/view/fc8aa56fb84ae45c3b358c98.html

附:图片的详细操作

object filename = @"C:/Inetpub/wwwroot/TestWebApp/test.doc";//文件名
Word.Application a = new Word.ApplicationClass();//建立一个Word程序对像
object Nothing = System.Reflection.Missing.Value;//空值
Word.Document b = a.Documents.Open(ref filename,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing);//建立一个Word文档对像

//其实这步就是执行了这个宏
InlineShape shape = a.Selection.InlineShapes.AddPicture(@"C:/Documents and Settings/Administrator/桌面/2003121512223366481.jpg",ref Nothing,ref Nothing,ref Nothing);

shape.Height = InchesToPoints(0.5)
shape.Width = InchesToPoints(0.5)

//Selection.InlineShapes.AddPicture FileName:= "C:/Documents and Settings/Administrator/桌面/2003121512223366481.bmp", LinkToFile:=False, SaveWithDocument:=True End Sub b.Save();//保存
b.Close(ref Nothing,ref Nothing,ref Nothing);//关闭Word文档
a.Quit(ref Nothing,ref Nothing,ref Nothing);//退出Word程序

word模板插入文字、图片相关推荐

  1. word文档html图片不能移动,win7系统Word中插入的图片不能移动的解决方法

    很多小伙伴都遇到过win7系统Word中插入的图片不能移动的困惑吧,一些朋友看过网上零散的win7系统Word中插入的图片不能移动的处理方法,并没有完完全全明白win7系统Word中插入的图片不能移动 ...

  2. Java 实现word 中写入文字图片的解决方案

    Java 实现word 中写入文字图片的解决方案 参考文章: (1)Java 实现word 中写入文字图片的解决方案 (2)https://www.cnblogs.com/jianguang/p/57 ...

  3. java读写word模板_Java操作Word模板插入列表

    Java操作Word模板插入列表 通过poi操作word,插入各种编号的列表,包括数字,字母,罗马字符,自定义任意字符.下面的示例就用了音乐符♬. 1.制作模板,插入列表使用语法*,模板内容为{{*n ...

  4. 让word中插入的图片不失真,图像保持原清晰度

    让word中插入的图片不失真,图像保持原清晰度 如图选择即可 可能的缺点就是word文件会变得更大,在保存和压缩会适当变慢. 但是我觉得有时候还是很有必要让图片变得清晰的.

  5. word中插入的图片的环绕方式

    一.word中插入的图片的环绕方式的区别 Word中插入图片,右键图片,选择"设置对象格式"---"版式",存在下面几种环绕方式: 嵌入型与上下型的区别:嵌入型 ...

  6. c# 使用word 标签 插入多图片 文字

    c#操作word 通过替换标签 达到 使用word 模板 创建模板 保存为模板 添加引用 using msword=Microsoft.Office.Interop.Word; using Syste ...

  7. 怎么把动图放到word里_如何让Word 中插入的图片不会乱动?

    回答: Word中插入图片后,让水印显示在图片上面可以通过以下几步实现: 第一步:先制作水印图片.用Windows自带的"画图"打上水印文字,如果需要旋转,就用图片处理软件(简单的 ...

  8. vue base64图片不显示_技巧 | word中插入的图片显示不完整怎么办?

    已经好久没有更新了,都快忘记有这个公众号存在了~ 这几个月发生了很多事情,工作上的任务也迟迟没有减轻,之前保持的日记也已经很久没有写了.但是觉得要是没有什么用什么方式将脑袋中时不时飘过的念头记录下来的 ...

  9. Freemarker下载Word文档(文字+图片+表格)Idea示例 (附word展示图片异常解决方案)(附JPEG格式图片通过imageio.read方法读取为null解决方案)

    流程:拿到word模板 转为ftl格式并填充占位符参数,调用java代码填充参数即可 (文末附word打开图片显示异常,wps打开却显示正常的解决方案) (文末附Jpeg格式图片获取为null解决方案 ...

最新文章

  1. led显示屏建设标准_户外LED显示屏3大防护标准_显示屏应对恶劣天气?
  2. Exchange Server 2016管理系列课件19.开启和管理存档邮箱
  3. shell 拿到service状态_9个实战及面试会经常用到的Shell脚本!
  4. python多个分隔符分割字符串_Python中带有多个分隔符的拆分字符串
  5. QQ2007退出市场
  6. 通用返回_Springboot项目整合通用mapper
  7. Python笔记-假设检验之双样本T检验(两样本是否相似)
  8. 【ICLR2019】Poster 论文汇总
  9. 中国互联网络发展状况统计报告
  10. 成员变量与局部变量的区别
  11. java home centos_Centos7配置JAVA_HOME
  12. Linux总结----PS命令
  13. Java使用C3P0连接池详解
  14. 30分钟学会iOS 11开发环境xcode 9图文教程
  15. 史上最全的 struts2 面试题
  16. python123随机密码生成_Python生成对应随机密码文件
  17. 中国互联网发展报告2018年度总结
  18. 知识:在遥远的海王星和天王星内部,居然会下钻石雨。
  19. 唯我倾城网上购物商城设计与实现
  20. 高中英语话题阅读 计算机,高中英语必修二Unit 3 Computers阅读课的教学设计

热门文章

  1. 用openjweb平台开发的企业档案管理系统介绍
  2. Android_如何创建桌面快捷方式
  3. 2d有限元计算机仿真,平面铣削加工过程计算机仿真分析
  4. 《人工智能及其应用》第2章书后题 | 西电《人工智能导论》作业
  5. 阿里云轻量服务器数据迁移至OSS
  6. 腾讯点播试看视频功能分享
  7. mysql ne_eq相等 ne、neq不相等, gt大于, lt小于 gte、ge大于等于 lte、le 小于等于 not非 mod求模 等...
  8. java狐狸游戏_Java继承
  9. Excel中的VLOOKUP函数,查找A列数据是否存在于B列,如果在返回C对应行的值
  10. 八个产品经理接私活的平台,你有技术就有钱