asp.net 操作word

参考一:点击这里

参考二:点击这里

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;
            _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();
        }
    }
}

这样引用:

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"即可。
时间: 2024-10-12 07:54:02

asp.net 操作word的相关文章

ASP.NET 操作WORD 遇到的两个问题之后的解决办法

因为用到ASP.NET操作word,根据网页内容在服务端生成word之后,供用户下载. 在本机测试时,一切正常,当我发布到服务器之后,问题来了 1,提示:未将对象引用设置到对象的实例. 搜素之后,按照网上的内容开始折腾,才发现这个问题真烦人. 根据网友的帖子,cmd 输入"dcomcnfg.exe", 如图所示,并没有出现帖子所描述的word之类的,唯一沾边的也就这个了,经过各种权限设置之后,还是不行(也可能时我设置的不对). 突然想起来服务器环境时64位,而开发环境时32位,搜索之后

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

ASP.NET账号在默认情况下是没有权限操作Microsoft Office对象的,如果不进行权限的配置,代码会抛出类似以下的异常: 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005. 这样给Asp.NET操作Microsoft Office对象带来了一定的困难.但我们还是要想办法来进行Office对象的操作.下面简单介绍一下本人在开发过程中曾经使用过的方法: 方法1:配置W

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

引用Word对象库文件  具体做法是打开菜单栏中的项目>添加引用>浏览,在打开的“选择组件”对话框中找到MSWORD.OLB后按确定即可引入此对象库文件,vs.net将会自动将库文件转化为DLL组件,这样我们只要在源码中创建该组件对象即可达到操作Word的目的! 如图 这会自动在你的应用程序文件夹中放置一个程序集(assembly)将COM接口邦定到Word. 上传并存储word文件 上传文件时首先通过上传控件找到所需上传的文件,然后获取文件的大小,最后以流的形式写入数据库 具体代码为 C#

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

引言:前段时间有项目要用c#生成Word格式的计算报告,通过网络查找到很多内容,但是都很凌乱,于是自己决定将具体的步骤总结整理出来,以便于更好的交流和以后相似问题可以迅速的解决! 现通过具体的示例演示具体的步骤: 第一步,制作模板 1,新建一个文档,文档内容如下: 图1 2,在相应位置插入书签:将鼠标定位到要插入书签的位置,点击“插入”>“书签”,弹出对话框,输入书签名,点击“添加”按钮,书签位置如图3所示 图2 图3 3,保存模板,命名为“模板1.dot”或者“模板1.doc” 图4 第二步,

[Asp.net]常见word,excel,ppt,pdf在线预览方案(转)

引言 之前项目需要,查找了office文档在线预览的解决方案,顺便记录一下,方便以后查询. 方案一 直接在浏览器中打开Office文档在页面上的链接.会弹出如下窗口: 优点:主流浏览器都支持. 缺点:Office文档链接在浏览器中打开,会有如上图的提示,需用户自己选择打开或者保存功能,如果客户电脑上安装迅雷下载软件,会启动迅雷下载,用户体验不好. 方案二 office文档转html,首先引入com组件中office库,然后在程序集扩展中引入word,excel,ppt的dll. 然后F6生成,会

Asp.net操作Excel----NPOI!!!!1

前言 Asp.net操作Excel已经是老生长谈的事情了,可下面我说的这个NPOI操作Excel,应该是最好的方案了,没有之一,使 用NPOI能够帮助开发者在没有安装微软Office的情况下读写Office 97-2003的文件,支持的文件格式包括xls, doc, ppt等.NPOI是构建在POI 3.x版本之上的,它可以在没有安装Office的情况下对Word/Excel文档进行读写操作. 方法 先去官网:http://npoi.codeplex.com/下载需要引入dll(可以选择.net

python操作word(改课文格式)【最终版】

python操作word的一些方法,前面写了一些感悟,有点跑题,改了下题目,方便能搜索到.心急的可以直接拉到最后看代码,我都加了比较详细的注释. 从8.3号早上9点,到8.8号下午5点半下班,终于把这个python代码写出来了,这五天简直是废寝忘食(扯淡),每天查资料到半夜2点(其实是天太热,洗完澡又晾干就要一个多小时了,在这里吐槽下今年的夏天,2016年北京的7月份简直了,平生第一次长痱子,连去年都没用过的凉席都翻出来了). 好吧,扯得有点远了.因为工作需要,要批量修改一批rtf文件里的文字格

java调用com组件操作word使用总结(jacob)

ava调用com组件操作word使用总结(jacob) 简单描述 在此处输入简单摘要 特别声明:使用java-com技术可以完成任何VBA可以完成的office文档操作; 一.准备工作 先了解一下概念,JACOB 就是 JAVA-COM Bridge的缩写,提供自动化的访问com的功能,也是通过JNI功能访问windows平台下的com组件或者win32系统库的.这是一个开始于 1999年的开源项目的成果,有很多使用者对该项目进行了修改,做出了自己的贡献. Jacob下载地址: http://s

C#操作Word Aspose.Words组件介绍及使用—基本介绍与DOM概述

1.基本介绍 Aspose.Words是一个商业.NET类库,可以使得应用程序处理大量的文件任务.Aspose.Words支持Doc,Docx,RTF,HTML,OpenDocument,PDF,XPS,EPUB和其他格式.使用Aspose.Words可以在不使用Microsoft.Word的情况下生成.修改.转换和打印文档.在项目中使用Aspose.Words可以有以下好处. 1.1丰富的功能集 其丰富的功能特性主要有以下4个方面: 1)格式转换.Aspose.Words具有高质量的文件格式转