asp.net中word打开(1)_asp.net网页能打开word文档vb代码-程序员宅基地

技术标签: 文档  reference  string  asp.net  .net  microsoft  object  

在ASP.NET中使用Microsoft Word文档

[日期:2004-10-04]  来源: CSDN <http://dev.csdn.net/develop/article/20/20901.shtm>  作者:  [字体: 大 <javascript:ContentSize(16)> 中 <javascript:ContentSize(14)> 小 <javascript:ContentSize(12)>]  

[来源]http://www.codeproject.com/useritems/wordapplication.asp


[作者]Michela

[下载本文中使用的演示工程] 工程文件 大小:309 Kb <http://www.codeproject.com/useritems/WordApplication/WordApplication_demo.zip>

[介绍]

    本文是应在ASP.NET里创建Microsoft Word文档之需而写的。这篇文章演示了在ASP.NET里怎么创建和修改Microsoft Word文档。

[背景]

    自动化是一种能让各种语言编写的(如:Visual Basic.NET或C#)应用程序在程序级别上控制其他应用程序。
    对于Word的自动化允许你执行诸如创建新的文档,向文档里添加文本,邮件合并和格式化文档这些操作。在Word和其他的Microsoft Office程序里,那些通过用户接口进行的可视化操作也可以通过程序级别的自动化来实现。
    Word通过对象模型把这个程序可操作的功能向外提供了使用接口。
    对象模型是一组类和方法的集合,这些类和方法与Word的逻辑组件构成对应。例如,他可能是应用程序对象,文档对象,段落对象,每一个对象都包含了Word组件的功能。

[建立工程]

    在.NET里操作Word的第一步就是添加COM引用到你的工程里,通过右键点击Solution Explorer的Reference,Add Reference。选择COM选项卡,查找Microsoft Word 10.0 Object Library。点击选择,OK。
    这将把封装有Word的COM的程序集自动的添加到应用程序目录里。
    现在,你可以建立一个Word的实例了:

    Word.ApplicationClass oWordApp = new Word.ApplicationClass();  

    你可以调用Word提供给你的方法和属性来操纵Word文档。
    学习如何使用Word,Excel,Powerpoint的对象模型最好的途径就是使用在这些Office应用里使用Macro Recorder:

    1.在Tools菜单的Macro选项里选择 Record New Macro ,并且执行你有兴趣的任务。
    2.在Tools菜单的Macro选项里选择 Stop Recording。
    3.如果你进行了纪录,选择Tools菜单的Macro选项里的Macros,找到你记录的宏,你可以编辑它。

    上面的操作产生了VBA代码来完成你记录的任务。需要注意的是,宏在大多数情况下不是最好的代码,但是它提供了一种便捷和可用的方法。
    下面例子打开并添加一写文字:

    object fileName = "c://database//test.doc";
    object readOnly = false;
    object isVisible = true;
    object missing = System.Reflection.Missing.Value;
    Word.ApplicationClass oWordApp = new Word.ApplicationClass();

    Word.Document oWordDoc = oWordApp.Documents.Open(ref fileName, ref missing,ref readOnly,
    ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
    ref missing, ref missing, ref isVisible,ref missing,ref missing,ref missing);

    oWordDoc.Activate();

    oWordApp.Selection.TypeText("This is the text");
    oWordApp.Selection.TypeParagraph();
    oWordDoc.Save();

    oWordApp.Application.Quit(ref missing, ref missing, ref missing);  

 

    如果创建一个新文档并保存是这样写的:


    Word.ApplicationClass oWordApp = new Word.ApplicationClass();

    Word.Document oWordDoc = oWordApp.Documents.Add(ref missing, ref missing,ref missing, ref missing);

    oWordDoc.Activate();

    oWordApp.Selection.TypeText("This is the text");
    oWordApp.Selection.TypeParagraph();
    oWordDoc.SaveAs("c://myfile.doc");

    oWordApp.Application.Quit(ref missing, ref missing, ref missing);  

    在C#里,Word文档类的打开方法是这样定义的:Open(ref object, ref object, ref object, ref object, ref object, ref object, ref object, ref object, ref object, ref object, ref object, ref object, ref object, ref object, ref object)。在C#里的打开方法需要15个参数,并且每个参数必须被ref关键字所描述,而且是object类型。
    第一个参数是文件,名,在Visual Basic.NET里通常是一个String,但是在在C#里,它必须是一个包含有String的object,代码是这样的:

    object fileName = "c://database//test.doc";  

    虽然我们仅需要使用Open方法的第一个参数,但是C#不允许使用默认参数,所以我们赋予它14个object类型的值:System.Reflection.Missing.Value

[使用摸版]

    如果你需要自动的建立有通用格式的文档,那你可以使用基于预格式化的摸版来建立新文档,这样可以方便很多。
    在Word里使用摸版而不是建立空文档有两个明显的优点:

    1.你可以更大程度的格式化文档和控制文档里的对象。
    2.可以用较少的代码建立文档。

    通过使用摸版,你可以调整表格、段落和其他一些在文档里的对象的位置,同时包括格式化这些对象。通过使用自动化处理,你可以建立一个基于摸版的文档,代码如下:

    Word.ApplicationClass oWordApp = new Word.ApplicationClass();
    object oTemplate = "c://MyTemplate.dot";
    oWordDoc = oWordApp.Documents.Add(ref oTemplate, ref Missing,ref Missing, ref Missing);  

    在你使用的摸版里,你可以定义一些记号,自动化处理将向这些位置填充文本,如下:

    object oBookMark = "MyBookmark";
    oWordDoc.Bookmarks.Item(ref oBookMark).Range.Text = "Some Text Here";  

 

    使用摸版的另一个优点是你可以创建和保存那些在运行过程中你想要的格式化样式,如下:

    object oStyleName = "MyStyle";
    oWordDoc.Bookmarks.Item(ref oBookMark).Range.set_Style(ref oStyleName);  

[使用CCWordApp类]

    在工程中包含了CCWordApp.cs这个文件,我不想总是在写象插入文本,打开文档这样的代码。
    所以,我决定把一些最重要的功能封装到CCWordApp类里去。
    下面代码简要描述了这个类和他的功能:
   

    public class CCWordApp
    {
    //it's a reference to the COM object of Microsoft Word Application
    private Word.ApplicationClass oWordApplic;
    // it's a reference to the document in use
    private Word.Document oWordDoc;

    // Activate the interface with the COM object of Microsoft Word
    public CCWordApp();

    // Open an existing file or open a new file based on a template
    public void Open( string strFileName);

    // Open a new document
    public void Open( );

    // Deactivate the interface with the COM object of Microsoft Word
    public void Quit( );

    // Save the document
    public void Save( );

    //Save the document with a new name as HTML document
    public void SaveAs(string strFileName );

    // Save the document in HTML format
    public void SaveAsHtml(string strFileName );

    // Insert Text
    public void InsertText( string strText);

    // Insert Line Break
    public void InsertLineBreak( );

    // Insert multiple Line Break
    public void InsertLineBreak( int nline);

    // Set the paragraph alignment
    // Possible values of strType :"Centre", "Right", "Left", "Justify"
    public void SetAlignment(string strType );

    // Set the font style
    // Possible values of strType :"Bold","Italic,"Underlined"
    public void SetFont( string strType );

    // Disable all the style
    public void SetFont( );

    // Set the font name
    public void SetFontName( string strType );

    // Set the font dimension
    public void SetFontSize( int nSize );

    // Insert a page break
    public void InsertPagebreak();

    // Go to a predefined bookmark
    public void GotoBookMark( string strBookMarkName);

    // Go to the end of document
    public void GoToTheEnd( );

    // Go to the beginning of document
    public void GoToTheBeginning( ); 

    打开一个存在的文件的代码将是这样的:

    CCWordApp test ;
    test = new CCWordApp();
    test.Open ("c://database//test.doc");
    test.InsertText("This is the text");
    test.InsertLineBreak;
    test.Save ();
    test.Quit(); 

[细节]

    演示工程包含:
    CCWordApp.cs - 上面使用的类
    CreateDocModel.aspx - 建立基于使用书签的摸版的新文档的例子。
    CreateNewDoc.aspx - 建立新文档,并向其中添加一写文本。
    ModifyDocument.aspx - 打开一个存在的文档,并在末尾追加一些文本。
    template/template1.dot - 摸版的例子(在CreateDocModel.aspx中使用到)

    注意你用来保存文档的目录,应该是可重写的。
    可以在 Web.config 里修改这个路径。

[参考文献]

Microsoft Word Objects  <http://msdn.microsoft.com/library/default.asp?url=/library/en-us/off2000/html/wotocObjectModelApplication.asp>
Converting Microsoft Office VBA Macros to Visual Basic .NET and C# <http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnofftalk/html/office11072002.asp>
HOWTO: Automate Microsoft Word to Perform a Mail Merge from Visual Basic .NET <http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q301/6/56.ASP&NoWebContent=1>
A Primer to the Office XP Primary Interop Assemblies  <http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnofftalk/html/office10032002.asp>
HOWTO: Find and Use Office Object Model Documentation <http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q222/1/01.asp&NoWebContent=1>
Creating and Opening Microsoft Word Documents from .NET using C# <http://www.c-sharpcorner.com/Code/2002/Mar/WordFromDotNet.asp>


 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/czsd82/article/details/1207000

智能推荐

oracle 12c 集群安装后的检查_12c查看crs状态-程序员宅基地

文章浏览阅读1.6k次。安装配置gi、安装数据库软件、dbca建库见下:http://blog.csdn.net/kadwf123/article/details/784299611、检查集群节点及状态:[root@rac2 ~]# olsnodes -srac1 Activerac2 Activerac3 Activerac4 Active[root@rac2 ~]_12c查看crs状态

解决jupyter notebook无法找到虚拟环境的问题_jupyter没有pytorch环境-程序员宅基地

文章浏览阅读1.3w次,点赞45次,收藏99次。我个人用的是anaconda3的一个python集成环境,自带jupyter notebook,但在我打开jupyter notebook界面后,却找不到对应的虚拟环境,原来是jupyter notebook只是通用于下载anaconda时自带的环境,其他环境要想使用必须手动下载一些库:1.首先进入到自己创建的虚拟环境(pytorch是虚拟环境的名字)activate pytorch2.在该环境下下载这个库conda install ipykernelconda install nb__jupyter没有pytorch环境

国内安装scoop的保姆教程_scoop-cn-程序员宅基地

文章浏览阅读5.2k次,点赞19次,收藏28次。选择scoop纯属意外,也是无奈,因为电脑用户被锁了管理员权限,所有exe安装程序都无法安装,只可以用绿色软件,最后被我发现scoop,省去了到处下载XXX绿色版的烦恼,当然scoop里需要管理员权限的软件也跟我无缘了(譬如everything)。推荐添加dorado这个bucket镜像,里面很多中文软件,但是部分国外的软件下载地址在github,可能无法下载。以上两个是官方bucket的国内镜像,所有软件建议优先从这里下载。上面可以看到很多bucket以及软件数。如果官网登陆不了可以试一下以下方式。_scoop-cn

Element ui colorpicker在Vue中的使用_vue el-color-picker-程序员宅基地

文章浏览阅读4.5k次,点赞2次,收藏3次。首先要有一个color-picker组件 <el-color-picker v-model="headcolor"></el-color-picker>在data里面data() { return {headcolor: ’ #278add ’ //这里可以选择一个默认的颜色} }然后在你想要改变颜色的地方用v-bind绑定就好了,例如:这里的:sty..._vue el-color-picker

迅为iTOP-4412精英版之烧写内核移植后的镜像_exynos 4412 刷机-程序员宅基地

文章浏览阅读640次。基于芯片日益增长的问题,所以内核开发者们引入了新的方法,就是在内核中只保留函数,而数据则不包含,由用户(应用程序员)自己把数据按照规定的格式编写,并放在约定的地方,为了不占用过多的内存,还要求数据以根精简的方式编写。boot启动时,传参给内核,告诉内核设备树文件和kernel的位置,内核启动时根据地址去找到设备树文件,再利用专用的编译器去反编译dtb文件,将dtb还原成数据结构,以供驱动的函数去调用。firmware是三星的一个固件的设备信息,因为找不到固件,所以内核启动不成功。_exynos 4412 刷机

Linux系统配置jdk_linux配置jdk-程序员宅基地

文章浏览阅读2w次,点赞24次,收藏42次。Linux系统配置jdkLinux学习教程,Linux入门教程(超详细)_linux配置jdk

随便推点

matlab(4):特殊符号的输入_matlab微米怎么输入-程序员宅基地

文章浏览阅读3.3k次,点赞5次,收藏19次。xlabel('\delta');ylabel('AUC');具体符号的对照表参照下图:_matlab微米怎么输入

C语言程序设计-文件(打开与关闭、顺序、二进制读写)-程序员宅基地

文章浏览阅读119次。顺序读写指的是按照文件中数据的顺序进行读取或写入。对于文本文件,可以使用fgets、fputs、fscanf、fprintf等函数进行顺序读写。在C语言中,对文件的操作通常涉及文件的打开、读写以及关闭。文件的打开使用fopen函数,而关闭则使用fclose函数。在C语言中,可以使用fread和fwrite函数进行二进制读写。‍ Biaoge 于2024-03-09 23:51发布 阅读量:7 ️文章类型:【 C语言程序设计 】在C语言中,用于打开文件的函数是____,用于关闭文件的函数是____。

Touchdesigner自学笔记之三_touchdesigner怎么让一个模型跟着鼠标移动-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏13次。跟随鼠标移动的粒子以grid(SOP)为partical(SOP)的资源模板,调整后连接【Geo组合+point spirit(MAT)】,在连接【feedback组合】适当调整。影响粒子动态的节点【metaball(SOP)+force(SOP)】添加mouse in(CHOP)鼠标位置到metaball的坐标,实现鼠标影响。..._touchdesigner怎么让一个模型跟着鼠标移动

【附源码】基于java的校园停车场管理系统的设计与实现61m0e9计算机毕设SSM_基于java技术的停车场管理系统实现与设计-程序员宅基地

文章浏览阅读178次。项目运行环境配置:Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:Springboot + mybatis + Maven +mysql5.7或8.0+html+css+js等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。_基于java技术的停车场管理系统实现与设计

Android系统播放器MediaPlayer源码分析_android多媒体播放源码分析 时序图-程序员宅基地

文章浏览阅读3.5k次。前言对于MediaPlayer播放器的源码分析内容相对来说比较多,会从Java-&amp;amp;gt;Jni-&amp;amp;gt;C/C++慢慢分析,后面会慢慢更新。另外,博客只作为自己学习记录的一种方式,对于其他的不过多的评论。MediaPlayerDemopublic class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal..._android多媒体播放源码分析 时序图

java 数据结构与算法 ——快速排序法-程序员宅基地

文章浏览阅读2.4k次,点赞41次,收藏13次。java 数据结构与算法 ——快速排序法_快速排序法