参考一:点击这里

参考二:点击这里

参考三:点击这里

  1. using System;
  2. using System.Web.Security;
  3. using Microsoft.Office.Interop.Word;
  4. using System.IO;
  5.  
  6. namespace WeixinService.Bll
  7. {
  8. public class WordOp
  9. {
  10. private ApplicationClass _wordApp;
  11. private Document _wordDoc;
  12. private static bool _isOpened = false;//判断word模版是否被占用
  13. public void SaveAs(string strFileName, bool isReplace)
  14. {
  15. if (isReplace && File.Exists(strFileName))
  16. {
  17. File.Delete(strFileName);
  18. }
  19. object missing = Type.Missing;
  20. object fileName = strFileName;
  21. _wordDoc.SaveAs(ref fileName, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
  22. ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
  23. }
  24.  
  25. //定义一个Word.Application 对象
  26. public void ActiveWordApp()
  27. {
  28. _wordApp = new ApplicationClass();
  29. }
  30.  
  31. public void Quit()
  32. {
  33. object missing = System.Reflection.Missing.Value;
  1. _wordDoc.Close(ref missing, ref missing, ref missing);//word关闭应该在ApplicationClass之前,如果不加这段代码,可能会报进程正在使用无法操作的错误
  1. _wordApp.Application.Quit(ref missing, ref missing, ref missing);
  2. _isOpened = false;
  3. }
  4.  
  5. //基于模版新建Word文件
  6. public void OpenTempelte(string strTemppath)
  7. {
  8. object missing = Type.Missing;
  9. //object Missing = System.Reflection.Missing.Value;
  10. ActiveWordApp();
  11. _wordApp.Visible = false;
  12. object oTemplate = (object)strTemppath;
  13. try
  14. {
  15. while (_isOpened)
  16. {
  17. System.Threading.Thread.Sleep(500);
  18. }
  19. _wordDoc = _wordApp.Documents.Add(ref oTemplate, ref missing, ref missing, ref missing);
  20. _isOpened = true;
  21. _wordDoc.Activate();
  22. }
  23. catch (Exception Ex)
  24. {
  25. Quit();
  26. _isOpened = false;
  27. throw new Exception(Ex.Message);
  28. }
  29. }
  30. public void FillLable(string labelId, string content)
  31. {
  32. //打开Word模版
  33. // OpenTempelte(tempName); //对LabelId的标签进行填充内容Content,即函件题目项
  34. object bkmC = labelId;
  35. if (_wordApp.ActiveDocument.Bookmarks.Exists(labelId))
  36. {
  37. _wordApp.ActiveDocument.Bookmarks.get_Item(ref bkmC).Select();
  38. }
  39. _wordApp.Selection.TypeText(content);
  40. //SaveAs(saveAsFileName);
  41. //Quit();
  42. }
  1. /// <summary>
  2. /// 向word标签插入图片
  3. /// </summary>
  4. /// <param name="labelId"></param>
  5. /// <param name="imgpath"></param>
  6. public void FillLableImg(string labelId, string imgpath)
  7. {
  8. //打开Word模版
  9. // OpenTempelte(tempName); //对LabelId的标签进行填充内容Content,即函件题目项
  10. object bkmC = labelId;
  11. if (_wordApp.ActiveDocument.Bookmarks.Exists(labelId))
  12. {
  13. _wordApp.ActiveDocument.Bookmarks.get_Item(ref bkmC).Select();
  14. }
  15. object Anchor = _wordApp.Selection.Range;
  16. object LinkToFile = false;
  17. object SaveWithDocument = true;
  18. object Left = 1;
  19. object Top = 1;
  20. object Width = 40;
  21. object Height = 32;
  22. _wordApp.ActiveDocument.Shapes.AddPicture(imgpath, ref LinkToFile, ref SaveWithDocument, ref Left, ref Top, ref Width, ref Height, ref Anchor);
  23. }
  1. }
  2. }

这样引用:

  1. public void Test(HttpContext context)
  2. {
  3. try
  4. {
  5. string path = context.Server.MapPath("RiskNoticeDoc");
  6. string templatePath = path + @"\RiskNoticeModel.dot";
  7. var wop = new WordOp();
  8. wop.OpenTempelte(templatePath);
  9. wop.FillLable("zs", "测试");
  10. wop.SaveAs(@"E:\Projects\微信公共服务平台项目\WeixinService\WeixinService.Web\RiskNoticeDoc\zw.docx", true);
  11. wop.Quit();
  12. //context.Response.Redirect(@"/download/savetest.doc");//做个跳转用于下载.
  13. }
  14. catch (Exception)
  15. {
  16. throw;
  17. }
  18. }

 

报错:

Error    1    Interop type 'Microsoft.Office.Interop.Word.ApplicationClass' cannot be embedded. Use the applicable interface instead.    E:\Projects\微信公共服务平台项目\WeixinService\WeixinService.Bll\WordOp.cs    10    17    WeixinService.Bll

 

解决办法:

  1. 解决办法:解决方案资源管理器
    -> 引用 -> "Microsoft.Office.Interop.Word" -> 右键选择属性 ->
    嵌入互操作类型的值改为"false"即可。

asp.net 操作word的更多相关文章

  1. asp.net操作word的表格

    近日开发中用户要求实现导出数据为Word,本来想使用html保存为word的实现,但因用户要求样式很高,使用html不好控制,并且导出中包括图片,使用页面导出时图片还是一个路径,不能把图片包括在wor ...

  2. ASP.NET操作Word的IIS权限配置

    ASP.NET账号在默认情况下是没有权限操作Microsoft Office对象的,如果不进行权限的配置,代码会抛出类似以下的异常: 检索 COM 类工厂中 CLSID 为 {00024500-000 ...

  3. asp.net 操作word 权限

    1.先安装office 2.在“DCOM配置”中,为IIS账号配置操作Word(其他Office对象也一样)的权限: 开始>运行>输入  dcomcnfg  >确定 具体操作:“组件 ...

  4. Asp.net操作Word文档,原来这么简单啊!

    引用Word对象库文件  具体做法是打开菜单栏中的项目>添加引用>浏览,在打开的“选择组件”对话框中找到MSWORD.OLB后按确定即可引入此对象库文件,vs.net将会自动将库文件转化为 ...

  5. C# asp.net 操作Word的前提配置和简单的方法

    操作的前提: 1.要保证机器本身要安装OFFICE. 有时安装了Office,但是不能找到Microsoft Word 11.0(或者更高的版本) Object Library.那可能是因为在安装of ...

  6. Asp.Net 操作word 第二篇[推荐]

    引言:前段时间有项目要用c#生成Word格式的计算报告,通过网络查找到很多内容,但是都很凌乱,于是自己决定将具体的步骤总结整理出来,以便于更好的交流和以后相似问题可以迅速的解决! 现通过具体的示例演示 ...

  7. asp.net操作word 配置在IIS上出现的问题

    异常: 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 80070005 拒绝访问. (异常来自 ...

  8. [Asp.net]常见word,excel,ppt,pdf在线预览方案,有图有真相,总有一款适合你!

    引言 之前项目需要,查找了office文档在线预览的解决方案,顺便记录一下,方便以后查询. 方案一 直接在浏览器中打开Office文档在页面上的链接.会弹出如下窗口: 优点:主流浏览器都支持. 缺点: ...

  9. C#操作word模板插入文字、图片及表格详细步骤

    c#操作word模板插入文字.图片及表格 1.建立word模板文件 person.dot用书签 标示相关字段的填充位置 2.建立web应用程序 加入Microsoft.Office.Interop.W ...

随机推荐

  1. javaSE第六天

    第六天    28 1. 二维数组(理解)    28 (1)就是元素为一维数组的一个数组.    28 (2)格式:    28 (3)案例(掌握):    28 A:二维数组的遍历    28 B ...

  2. js设计模式(12)---职责链模式

    0.前言 老实讲,看设计模式真得很痛苦,一则阅读过的代码太少:二则从来或者从没意识到使用过这些东西.所以我采用了看书(<js设计模式>)和阅读博客(大叔.alloyteam.聂微东)相结合 ...

  3. Knockout.Js官网学习(click绑定)

    前言 click绑定在DOM元素上添加事件句柄以便元素被点击的时候执行定义的JavaScript 函数.大部分是用在button,input和连接a上,但是可以在任意元素上使用. 简单示例 <h ...

  4. js----全局变量和局部变量部分讲解

    以此文作为自己学习的一个总结. 关于全局变量和局部变量的一句简单的定义:在函数外声明的变量都为全局变量,在函数内声明的为局部变量. 一.局部变量和全局变量重名会覆盖全局变量 var a = 1; fu ...

  5. C# winform combobox控件中子项加删除按钮(原创)

    效果如下图,本人网上搜索资料加上自己的研究终于实现了在combobox子项中加上删除按钮. 一.窗体中的代码: using System; using System.Collections.Gener ...

  6. php怎么解析utf-8带BOM编码的json数据,php解析json数据返回NULL

    今天遇到一个问题,json_decode解析json数据返回null,试了各种方法都不行,最后发现,原来是json文件编码的问题. 当json_decode解析utf-8带BOM格式的json数据时, ...

  7. CKeditor的简单使用

    由于项目中要使用ckeditor 做个推荐功能,由于值设定到文本内容,就选择最基本的使用. 使用的版本为当前最新版本4.4.7,你需要下载两部分,一个是前台使用,一个是后台使用, 你可以到我的网盘中下 ...

  8. 关键字替换排除HTML标签属性字符

    解决办法: 1.打开文件e/class/functions.php 2.找到函数 ReplaceKey($newstext,$classid=0) 3.找到替换代码 if(STR_IREPLACE) ...

  9. DELPHI 使用dbexpress控件连接MySQL数据库方法

    1. 在窗体上放置4个控件: SQLConnection1,SimpleDataSet1,DataSource1,DBGrid (注意: 如果 出现"Operation not allowe ...

  10. SQL Server 基础:Cast和Convert的区别

    CAST 和 CONVERT 都可以将某种数据类型的表达式显式转换为另一种数据类型. 语法: CAST ( expression AS data_type ) CONVERT (data_type[( ...