[C#]利用VSTO操作Office文档而无需安装Office

简介:

[C#]利用VSTO操作Office文档而无需安装Office

编写者

日期

关键词

郑昀@ultrapower

2005-8

Vsto office c# Interop word

 

1.1. VSTO

   VSTO,就是Visual Studio Tools for the Microsoft Office System。可以在这里找到更多信息:

       http://msdn.microsoft.com/office/understanding/vsto/default.aspx

首先,必须在系统中安装VSTO(不用安装Office即可使用)

       为了使用VSTO,我们的工程需要引入如下引用:

1-1 引用示范

       其中指的是“Microsoft.Office.Interop.Word”,你可以通过下面的图样了解如何添加这个COM引用:

1-2 添加Word引用

其中指的是“Microsoft Office 11.0 Object Library”,你可以通过下面的图样了解如何添加这个COM引用:

1-3 添加Office.Core引用

 

1.2. Word.ApplicationClass打开文档

   Word打开指定的文档很简单。

代码

// a reference to Word application

private Microsoft.Office.Interop.Word.ApplicationClass m_oWordApp =

new Microsoft.Office.Interop.Word.ApplicationClass();

// a reference to the document

private Microsoft.Office.Interop.Word.Document m_oDoc;

 

object fileName = strDocumentFilePath;             

 

m_oWordApp.Visible = false;

 

m_oDoc =

    m_oWordApp.Documents.Open(ref fileNameref 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

    ,ref missing);

 

m_oDoc.Activate();

 

/// http://msdn2.microsoft.com/library/wt26ady8(en-us,vs.80).aspx

///  convert all list numbers and LISTNUM fields in the document to text

object numberType =

    Microsoft.Office.Interop.Word.WdNumberType.wdNumberAllNumbers;

m_oDoc.ConvertNumbersToText(ref numberType);

       记得调用Microsoft.Office.Interop.Word.Document.Activate()将当前打开的文档激活。

ConvertNumbersToText方法是用来把文档中所有的编号符号转换为文本的。

1.3. Word.Range选定文档范围

   还有Word.Range这个接口,可以选定某一段文字,按照指定的方式复制出来。

代码

object rangeStart = begin;

object rangeEnd = (end < nCount)?end:nCount;

Microsoft.Office.Interop.Word.Range rng =

    m_oDoc.Range(ref rangeStart, ref rangeEnd);

rng.Select();

 

/////////////////////////////////////////////////////

///

Microsoft.Office.Interop.Word.TextRetrievalMode RetrievalMode =

    rng.FormattedText.TextRetrievalMode;

RetrievalMode.IncludeHiddenText = false;

RetrievalMode.IncludeFieldCodes = false;

/// sets the view for text retrieval to Web view

RetrievalMode.ViewType =

    Microsoft.Office.Interop.Word.WdViewType.wdWebView;

///

/////////////////////////////////////////////////////

 

String strYourWord = rng.FormattedText.Text;

  

1.4. 销毁一切

   无论发生了什么事情,都必须保证WinWord.exe实例被释放,这是一个服务的基本要求。

代码

/// 关闭打开的文档:

if(m_oDoc != null)

{

    m_oDoc.Close(ref saveChanges, ref missing, ref missing);

    m_oDoc = null;

}

if(m_oWordApp != null)

{

    //  这里就不要再判断if(m_oWordApp.Application.ActiveDocument != null)

    //  否则会出现“System.Runtime.InteropServices.COMException (0x800A1098): 因为没有打开的文档,所以这一命令无效。”

    //  这样的异常!

    m_oWordApp.Application.Quit(ref saveChanges, ref missing, ref missing);

   

    m_oWordApp = null;

}

  

  

编写者

日期

关键词

郑昀@ultrapower

2005-8

Vsto office c# Interop word


目录
相关文章
|
3月前
|
C#
【Azure App Service】使用Microsoft.Office.Interop.Word来操作Word文档,部署到App Service后报错COMException
System.Runtime.InteropServices.COMException (0x80040154): Retrieving the COM class factory for component with CLSID {000209FF-0000-0000-C000-000000000046} failed due to the following error: 80040154 Class not registered (0x80040154 (REGDB_E_CLASSNOTREG)).
|
3月前
|
XML C# 开发工具
C# 删除Word文档中的段落
【11月更文挑战第3天】本文介绍了两种方法来操作 Word 文档:一是使用 `Microsoft.Office.Interop.Word` 库,适用于 Windows 环境下操作 Word 文档,需引用相应库并在代码中引入命名空间;二是使用 Open XML SDK,适用于处理 .docx 格式的文档,通过引用 `DocumentFormat.OpenXml` 库实现。文中提供了示例代码,展示了如何打开、删除段落并保存文档。
|
8月前
|
Docker 容器
如何使用Docker部署WPS Office服务并实现无公网IP远程处理文档表格(二)
使用Docker部署的WPS Office服务可以通过内网穿透工具Cpolar实现远程访问。首先,创建一个名为“wps office”的隧道,选择HTTP协议和3000端口,分配免费的随机域名,并指定中国地区。然后,通过Cpolar的管理界面获取HTTP公网地址,用以远程访问WPS Office。由于随机域名会变化,可以升级Cpolar套餐并保留一个二级子域名,确保长期稳定的远程访问。配置子域名后,更新隧道设置,完成固定公网地址的绑定,从而实现随时随地通过固定地址访问WPS Office。
|
8月前
|
安全 Linux 网络安全
如何使用Docker部署WPS Office服务并实现无公网IP远程处理文档表格(一)
在群晖NAS上使用Docker部署WPS Office并结合Cpolar内网穿透的步骤包括: 1. 通过SSH命令行拉取`linuxserver/wps-office`镜像。 2. 在群晖容器管理界面运行镜像,设置启动选项和端口映射。 3. 本地访问群晖IP:3000端口以使用WPS Office。 4. 安装Cpolar套件,手动添加并安装到群晖,通过9200端口访问其Web管理界面。 5. 使用Cpolar配置内网穿透,实现远程访问WPS Office。 这一过程允许用户即使在没有公网IP的情况下,也能通过Cpolar将内网的WPS Office服务暴露到公网,便于远程办公和文档处理。
|
9月前
|
JavaScript Java 测试技术
基于ssm+vue.js的计算机office课程平台附带文章和源代码设计说明文档ppt
基于ssm+vue.js的计算机office课程平台附带文章和源代码设计说明文档ppt
54 1
|
9月前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的计算机office课程平台的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的计算机office课程平台的详细设计和实现(源码+lw+部署文档+讲解等)
|
9月前
|
XML 存储 C#
C# xml文档反序列化记事
本文介绍了使用XmlSerializer进行XML序列化和反序列化的关键点。包括:1) 以独占方式读取XML文件以避免并发问题;2) 当元素名与类型名不一致时,可通过`[XmlArrayItem]`指定元素名,或创建继承自原始类型的子类;3) 处理DateTime反序列化错误,通过中间字符串属性转换;4) 提到了常用C#特性如`[XmlRoot]`, `[XmlElement]`, `[XmlAttribute]`, `[XmlIgnore]`和`[XmlArrayItem]`的作用。
|
9月前
|
Windows
0基础安装激活版本office2016
0基础安装激活版本office2016
|
9月前
|
Web App开发 JavaScript 前端开发
2024年纯前端VUE在线编辑微软Office/金山WPS的Word/Excel文档
现在,随着数字化进程渗透到到各行各业,数据安全已经成为了数字化革命中的重要组成部分,而在线Office成在OA、ERP、文档系统中得到了广泛的应用,为我国的信息化事业也做出了巨大贡献。随着操作系统、浏览器及Office软件的不断升级和更新换代,加上国家对信息化、数字化系统要求的不断提升,一些厂家的WebOffice控件产品不断被淘汰出局,而现存的几个产品也存在以下几个问题:
832 17
2024年纯前端VUE在线编辑微软Office/金山WPS的Word/Excel文档
|
9月前
|
安全 C# 开发者
.NET开源的一键自动化下载、安装、激活Microsoft Office利器
.NET开源的一键自动化下载、安装、激活Microsoft Office利器
195 5