参考一:点击这里

参考二:点击这里

参考三:点击这里

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

这样引用:

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

 

报错:

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

 

解决办法:

解决办法:解决方案资源管理器 
-> 引用 -> "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. banner淡出效果

    <div class="banner"> <div class="ban"></div> <ul class=&quo ...

  2. .NET程序员吧需要知道的小知识——关于数据库

    关于数据库 作为一个有“情怀的”(B格高一些的).NET开发工程师,需要多少知道一些这样的小故事. 哪怕仅仅当作一些扯淡的谈资.   1.文件型数据库(常见的) Access SQLite SQLSe ...

  3. InnoDB 存储引擎—索引

    1.引言         InnoDB 存储引擎支持以下几种觉的索引:             1.1    B+ 树索引 (平衡树索引)             1.2    全文索引       ...

  4. ChainOfResponsibility

    #include <iostream> using namespace std; class Chain { public: bool Handle() { return false; } ...

  5. SVN 管理

    01. 源代码管理工具概述(PPT) ================================================================================ ...

  6. php判断是否为json格式的方法

    php判断是否为json格式的方法. 首先要记住json_encode返回的是字符串, 而json_decode返回的是对象 判断数据不是JSON格式: 复制代码代码如下: function is_n ...

  7. PHP函数:生成N个不重复的随机数

    思路:将生成的随机数存入数组,再在数组中去除重复的值,即可生成一定数量的不重复随机数. 程序: <?php /* * array unique_rand( int $min, int $max, ...

  8. 【转】Spark 体系结构

    原文地址:http://jerryshao.me/architecture/2013/03/29/spark-overview/ 援引@JerryLead的系统架构图作为Spark整体结构的一个 bi ...

  9. 配置visual studio code进行asp.net core rc2的开发(转载jeffreywu)

    1.安装.net core sdk https://github.com/dotnet/cli#installers-and-binaries,根据你的系统选择下载 2.下载vscode的C#扩展插件 ...

  10. automapper的简单用法

    AutoMapper对象转换方面(Object-Object Mapping)对象映射工具,实现对象和对象之间的转化.主要应用在项目的dto,model,entity或viewmodel之间转换,其实 ...