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 ...
随机推荐
- 十七、OGNL表达式
十七.OGNL OGNL简介: OGNL是对象导航图语言.它是一个独立的项目.早期的webwork框架用到了OGNL作为自己的表达式语言, 所以struts2也是用OGNL作为表达式语言,当然也可以使 ...
- 高仿QQ的即时通讯应用带服务端软件安装
Android 基于xmpp协议,smack包,openfire服务端(在下面)的高仿QQ的即时通讯实现.实现了注册,登录,读取好友列表,搜索好友,添加分组,添加好友,删除好友,修改心情,两个客户端之 ...
- JavaScript学习小结(一)——JavaScript入门基础
一.JavaScript语言特点 1.1.JavaScript是基于对象和事件驱动的(动态的) 它可以直接对用户或客户输入做出响应,无须经过Web服务程序.它对用户的响应,是采用以事件驱动的方式进行的 ...
- 开篇 hello 内Cool超人
经过一年时间看到asp.net mvc一直被受微软开发团队的注重.与之相比的silverlight我感觉到有点力不从心.除去silverlight第一次运行要安装Runtime不说,产品不可能只运行在 ...
- JS中cookie的基本使用
cookie是本身是HTML中ducument中的一个属性,可以用来保存一些简单的数据信息,比如用户名.密码等,提高一些网站的用户体验度.下面就来简单的说说cookie,它有下面几个特性: 1.有过期 ...
- hadoop-cdh with snappy
hadoop: 2.5.0-cdh5.3.6 snappy: 1.1.3 hadoop 2.*不需要hadoop-snappy.只要机器上安装好snappy, 直接编译就可以 编译命令: mvn cl ...
- Python核心编程--学习笔记--7--字典和集合
本章介绍Python语言中的映射类型(字典)和集合类型,包括操作符.工厂函数.内建函数与方法. 1 字典 字典是Python中唯一的映射类型——键key直接映射到值value.字典是容器类型,其对象是 ...
- Python核心编程--学习笔记--1--Python简介
本章介绍了Python的背景知识,包括什么是Python.Python的起源以及Python的一些关键特性. 1 什么是Python Python是一门优雅而健壮的编程语言,它继承了传统编译语言的强大 ...
- python的http请求应用--每日签到
写点python吧,python其实是个很好用的工具,作为浇水语言,跟其他语言联系也很紧密,想用什么包直接import,导入ctypes调用底层函数库,导入web相关的包可以轻松写爬虫,今天我们写的跟 ...
- rspec的一些常见用法
这里讲了如何安装rspec,安装使用rspec. 下面介绍一下rspec中常见的使用方法. 下面是一个最简单的测试用例,判断true是不是等于true,should_be是旧的用法,新用法推荐使用ex ...