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 ...
随机推荐
- C++多态性——函数的覆盖和隐藏
1.函数的覆盖 覆盖的条件: 基类函数必须是虚函数(使用Virtual关键字进行声明): 发生覆盖的两个函数必须分别位于派生类和基类中: 函数名称与参数列表必须完全一样: 2.函数的隐藏 隐藏,是指派 ...
- c#学习之Socket网络编程
我是新手以前没写过博客 希望大家勿喷, 在编写Socket的时候需要导入System.Net.Socket 命名空间.利用该类我们可以直接编写Socket的客户端和服务的的程序了, 这里我们只讲tpc ...
- 学习c的第8天
#include <stdio.h> int main() { char ch; printf("请输入分数等级(A,B,C,D):"); scanf("%c ...
- WordPress 主题开发 - (十三) Archive模板 待翻译
What archive.php does (and all its related templates) is show posts based on a select criteria. A da ...
- 2013-10-25笔记,css: mini-width, 标准居中,样式中*号使用,背景图像位置定位
mini-width:设置元素的最小宽度.該屬性值會對元素的寬度設置一個最小限制.因此,元素可以比制定值寬,但不能比制定值窄.不允許指定負值. 完美的居中佈局: body{text-align: ce ...
- LaTex中让页码从正文开始编号
在正文和目录之前这样设置即可 \setcounter{page}{}
- C 几种异常机制简单讲述
引言 这是关于C中如何使用异常机制的讨论.顺带讲一讲C中魔法函数的setjmp内部机制.通过它实现高级的异常try...catch. 允许我先扯一段面试题. 对于计算机面试题. 算法题等.觉得还是有意 ...
- JAVA基础-子类继承父类实例化对象过程
之前在项目中碰到这样一个问题: 类B继承了类A,B在实例化的时候,A的构造方法中调用了B的某个方法,并且B的方法中对B的成员属性进行了初始化,然后最后得到的B对象的成员属性为空. 代码场景如下: 这里 ...
- linux kernel 0.11 bootsect
bootsect作用 ①将自己移动到0x90000处 ②将setup从磁盘读到0x90200处 ③将system从磁盘读到0x10000处 寄存器 汇编代码中存在:数据段data seg 栈段 sta ...
- SpringMvc中Interceptor拦截器用法
SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证,或者是来判断用户是否登陆等. 一. 使用场景 1 ...