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 ...
随机推荐
- 快速解决Canvas.toDataURL 图片跨域的问题
出现Canvas.toDataURL 图片跨域问题怎么解决呢?下面小编就为大家带来一篇Canvas.toDataURL 图片跨域问题的快速解决方法.一起跟随小编过来看看吧 如题,在将页面的图片地址进行 ...
- Winfrom 基于TCP的Socket 编程
基于TCP的Socket基础例子 服务端的代码 public partial class Form1 : Form { public Form1() { InitializeComponent(); ...
- linux基本使用(一)
分区1./ 根分区2. swap 交换分区(大小建议是内存的1~2倍)3. /home 分区4./boot 引导文件(启动加载)分区5./var 等,最低 要有前2个分区吧,最好有home分区,因为没 ...
- WordPress默认栏目设置
WordPress是一个注重美学.易用性和网络标准的个人信息发布平台,是全球使用最多的博客系统,只需要在系统后台做一些简单的设计,基本就能实现我们日常个性化发布个人信息的需求,而博客后台的使用其实很简 ...
- SharePoint ribbon icons disappeared(网站顶部Top bar 齿轮图标,以及编辑模式下Ribbon中Icon消失)
Questions: has anyone ever seen this before? all my icons in my ribbon have disappeared. I'm using m ...
- 小白学jquery Mobile《构建跨平台APP:jQuery Mobile移动应用实战》连载四(场景切换)
作为一款真正有使用价值的应用,首先应该至少有两个页面,通过页面的切换来实现更多的交互.比如手机人人网,打开以后先是进入登录页面,登录后会有新鲜事,然后拉开左边的面板,能看到相册.悄悄话.应用之类的其他 ...
- 将python2.7+django1.10部署到SAE上
首先我想说的是我为什么选择SAE呢?本人学生一枚,没钱.然后sae好像又有免费的一定限额,所以我就选了它. 期间曲折颇多,实在不是三言两语所能道情的.各种百度,谷歌,最后所幸成功了,幸哉! 主要参考了 ...
- ios 总结
1 ocoa Touch Layer{ App Extensions https://developer.apple.com/library/ios/documentation/General/Con ...
- C扩展 从共享内存shm到memcache外部内存
引言 - ipc - shm 共享内存 本文会通过案例了解ipc 的共享内存机制使用, 后面会讲解C 如何使用外部内存服务memcached. 好先开始了解 linux 共享内存机制. 推荐先参看下面 ...
- kettle日志记录
环境描述: 现在一个项目有很多个作业,需要知道每次跑批后哪些ktr跑成功,哪些失败了 问题解决: 下面是一个具体的操作流程 首先建立数据库表 CREATE TABLE test_1(id INT,NA ...