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 ...
随机推荐
- 实现支持在Mac OS的最小大化的过渡效果
实现支持在Mac OS的最小大化的过渡效果,该源码是刚刚在源码天堂那个网站上转载过来的,个人感觉还不错的,大家可以学习一下吧. 源码下载:http://code.662p.com/view/2250. ...
- Arch 安装步骤
1.CFDISK 命令分区 一个主分区和一个逻辑分区 2.partprobe /dev/sdx 刷新分区表 3.mkfs 4. 5. 6.>dhcpcd 7. 8. 9. 10. 11. 12. ...
- jquery.qrcode.js生成二维码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Widnows批处理异地备份数据
@echo off@title Mysql+fileBckupset files=D:\backup\%date:~0,10%.rarset userdb="root"set pw ...
- nginx的rewrite,gzip,反向代理学习笔记
rewrite模块名:ngx_http_rewrite_module默认自动被编译 指令:rewrite regex replacement [flag] regex :正则表达式,用于匹配用户请求的 ...
- redis的数据类型
redis有string,hash,list,sets.zsets几种数据类型 1.string数据类型 可包含任何数据,是二进制安全的,比如图片或者序列化的对象set key valueset na ...
- 通过Sql语句控制SQLite数据库增删改查
person类属性有Intenger id,String name,Intenger age,相应的构造方法和set get方法. package com.xh.tx.dao; import jav ...
- 【easuyi】---easyui中的验证validatebox自定义
这里比较简单的使用就不再多说,主要说一下自定义的validatebox. 1.验证密码是否相等,这个直接参考给定的列子就行,这里主要学习这种灵活使用的方式和方法. <input id=" ...
- Learning Scrapy笔记(五)- Scrapy登录网站
摘要:介绍了使用Scrapy登录简单网站的流程,不涉及验证码破解 简单登录 很多时候,你都会发现你需要爬取数据的网站都有一个登录机制,大多数情况下,都要求你输入正确的用户名和密码.现在就模拟这种情况, ...
- IL中的栈和闪电的Owin推荐
最近几天有幸得到闪电大哥的指点,了解了EMIT和IL中的一些指令.虽然有高射炮打蚊子的说法,但是我相信“二八定律”,80%的功能可以用20%的技术解决,20%的功能只能用80%的技术解决.大哥的博客: ...