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;
- _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的更多相关文章
- asp.net操作word的表格
近日开发中用户要求实现导出数据为Word,本来想使用html保存为word的实现,但因用户要求样式很高,使用html不好控制,并且导出中包括图片,使用页面导出时图片还是一个路径,不能把图片包括在wor ...
- ASP.NET操作Word的IIS权限配置
ASP.NET账号在默认情况下是没有权限操作Microsoft Office对象的,如果不进行权限的配置,代码会抛出类似以下的异常: 检索 COM 类工厂中 CLSID 为 {00024500-000 ...
- asp.net 操作word 权限
1.先安装office 2.在“DCOM配置”中,为IIS账号配置操作Word(其他Office对象也一样)的权限: 开始>运行>输入 dcomcnfg >确定 具体操作:“组件 ...
- Asp.net操作Word文档,原来这么简单啊!
引用Word对象库文件 具体做法是打开菜单栏中的项目>添加引用>浏览,在打开的“选择组件”对话框中找到MSWORD.OLB后按确定即可引入此对象库文件,vs.net将会自动将库文件转化为 ...
- C# asp.net 操作Word的前提配置和简单的方法
操作的前提: 1.要保证机器本身要安装OFFICE. 有时安装了Office,但是不能找到Microsoft Word 11.0(或者更高的版本) Object Library.那可能是因为在安装of ...
- Asp.Net 操作word 第二篇[推荐]
引言:前段时间有项目要用c#生成Word格式的计算报告,通过网络查找到很多内容,但是都很凌乱,于是自己决定将具体的步骤总结整理出来,以便于更好的交流和以后相似问题可以迅速的解决! 现通过具体的示例演示 ...
- asp.net操作word 配置在IIS上出现的问题
异常: 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 80070005 拒绝访问. (异常来自 ...
- [Asp.net]常见word,excel,ppt,pdf在线预览方案,有图有真相,总有一款适合你!
引言 之前项目需要,查找了office文档在线预览的解决方案,顺便记录一下,方便以后查询. 方案一 直接在浏览器中打开Office文档在页面上的链接.会弹出如下窗口: 优点:主流浏览器都支持. 缺点: ...
- C#操作word模板插入文字、图片及表格详细步骤
c#操作word模板插入文字.图片及表格 1.建立word模板文件 person.dot用书签 标示相关字段的填充位置 2.建立web应用程序 加入Microsoft.Office.Interop.W ...
随机推荐
- javaSE第六天
第六天 28 1. 二维数组(理解) 28 (1)就是元素为一维数组的一个数组. 28 (2)格式: 28 (3)案例(掌握): 28 A:二维数组的遍历 28 B ...
- js设计模式(12)---职责链模式
0.前言 老实讲,看设计模式真得很痛苦,一则阅读过的代码太少:二则从来或者从没意识到使用过这些东西.所以我采用了看书(<js设计模式>)和阅读博客(大叔.alloyteam.聂微东)相结合 ...
- Knockout.Js官网学习(click绑定)
前言 click绑定在DOM元素上添加事件句柄以便元素被点击的时候执行定义的JavaScript 函数.大部分是用在button,input和连接a上,但是可以在任意元素上使用. 简单示例 <h ...
- js----全局变量和局部变量部分讲解
以此文作为自己学习的一个总结. 关于全局变量和局部变量的一句简单的定义:在函数外声明的变量都为全局变量,在函数内声明的为局部变量. 一.局部变量和全局变量重名会覆盖全局变量 var a = 1; fu ...
- C# winform combobox控件中子项加删除按钮(原创)
效果如下图,本人网上搜索资料加上自己的研究终于实现了在combobox子项中加上删除按钮. 一.窗体中的代码: using System; using System.Collections.Gener ...
- php怎么解析utf-8带BOM编码的json数据,php解析json数据返回NULL
今天遇到一个问题,json_decode解析json数据返回null,试了各种方法都不行,最后发现,原来是json文件编码的问题. 当json_decode解析utf-8带BOM格式的json数据时, ...
- CKeditor的简单使用
由于项目中要使用ckeditor 做个推荐功能,由于值设定到文本内容,就选择最基本的使用. 使用的版本为当前最新版本4.4.7,你需要下载两部分,一个是前台使用,一个是后台使用, 你可以到我的网盘中下 ...
- 关键字替换排除HTML标签属性字符
解决办法: 1.打开文件e/class/functions.php 2.找到函数 ReplaceKey($newstext,$classid=0) 3.找到替换代码 if(STR_IREPLACE) ...
- DELPHI 使用dbexpress控件连接MySQL数据库方法
1. 在窗体上放置4个控件: SQLConnection1,SimpleDataSet1,DataSource1,DBGrid (注意: 如果 出现"Operation not allowe ...
- SQL Server 基础:Cast和Convert的区别
CAST 和 CONVERT 都可以将某种数据类型的表达式显式转换为另一种数据类型. 语法: CAST ( expression AS data_type ) CONVERT (data_type[( ...