c# 如何打开word文档,及判断是否已经打开

C#调用office interop接口打开word、excel、ppt,拦截处理关闭、保存事件 阅读详情

首先添加引用

Microsoft Office 14.0 Object Library
Microsoft Word 14.0 Object Library 

添加命名空间

using MSWord = Microsoft.Office.Interop.Word; 

添加定义

private MSWord.Application m_word;

添加事件

            m_word = new MSWord.Application();
            Object filename = "文档.docx";
            Object filefullname = System.Windows.Forms.Application.StartupPath + "文档.docx";
            Object confirmConversions = Type.Missing;
            Object readOnly = Type.Missing;
            Object addToRecentFiles = Type.Missing;
            Object passwordDocument = Type.Missing;
            Object passwordTemplate = Type.Missing;
            Object revert = Type.Missing;
            Object writePasswordDocument = Type.Missing;
            Object writePasswordTemplate = Type.Missing;
            Object format = Type.Missing;
            Object encoding = Type.Missing;
            Object visible = Type.Missing;
            Object openConflictDocument = Type.Missing;
            Object openAndRepair = Type.Missing;
            Object documentDirection = Type.Missing;
            Object noEncodingDialog = Type.Missing;
 
           //判断文档是否已经打开

            bool inUse = true;
            string fileName1 = filefullname.ToString();
            if (File.Exists(fileName1))
            {
                FileStream fs = null;
                try
                {
                    fs = new FileStream(fileName1, FileMode.Open, FileAccess.Read, FileShare.None);
                    inUse = false;
                }
                catch (Exception ex)
                {

                    MessageBox.Show("帮助文档已打开", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);       
                    return;
                }

                finally
                {
                    if (fs != null)
                    {
                        fs.Close();
                    }
                }
           
            }
            else
            {
                MessageBox.Show("帮助文档不存在", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            /////////////////

            try
            {
                 if(inUse == false)
                {
                    m_word.Documents.Open(ref filefullname,
                   ref confirmConversions, readOnly=true, ref addToRecentFiles,
                   ref passwordDocument, ref passwordTemplate, ref revert,
                   ref writePasswordDocument, ref writePasswordTemplate,
                   ref format, ref encoding, ref visible, ref openConflictDocument,
                   ref openAndRepair, ref documentDirection, ref noEncodingDialog
                   );

                    m_word.Visible = true;
                }
               
               
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("打开文档异常", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }

**************************************************************************************************

在打开文档时,有很多参数Documents.Open(,,,),这些参数的具体含义是什么呢?

参数

参数
名称必需/可选数据类型说明
FileName必需Variant文档名(可包含路径)。
ConfirmConversions可选VariantTrue 显示 转换文件对话框中,如果该文件不是 Microsoft Word 格式。
ReadOnly可选Variant为 True,则以只读方式打开文档。 此参数不会覆盖已保存文档的只读推荐设置。 例如,如果在打开只读推荐设置的情况下保存文档,则将 ReadOnly 参数设置为 False 将不会导致文件以读/写方式打开。
AddToRecentFiles可选Variant真 要将文件名添加到列表中最近使用的文件在 文件菜单的底部。
PasswordDocument可选Variant打开文档时所需的密码。
PasswordTemplate可选Variant打开模板时所需的密码。
Revert可选Variant控制如果 FileName 是打开文档的名称会进行什么操作。 为 True,则放弃对打开文档的任何未保存更改并重新打开文件。 为 False,则激活打开的文档。
WritePasswordDocument可选Variant用于保存文档更改的密码。
WritePasswordTemplate可选Variant用于保存模板更改的密码。
Format可选Variant用于打开文档的文件转换器。 可为以下 WdOpenFormat 常量之一。 默认值为 wdOpenFormatAuto。 若要指定外部文件格式,请将 OpenFormat 属性应用于 FileConverter 对象,以确定要与此参数一起使用的值。
Encoding可选Variant当你查看保存的文档时 Microsoft Word 所使用的文档编码(代码页或字符集)。 可以是任何有效的 MsoEncoding 常量。 要查看有效 MsoEncoding 常量的列表,请参阅“Visual Basic 编辑器”中的“对象浏览器”。 默认值是系统代码页。
Visible可选Variant如此 如果在可见窗口中打开文档。 默认值为 True 。
OpenConflictDocument可选Variant指定是否打开具有脱机冲突的文档的冲突文件。
OpenAndRepair可选Variant如果该属性为 True ,则修复文档,以防止文档毁坏。
DocumentDirection可选WdDocumentDirection表示文档中的横排文字。 默认值为 wdLeftToRight。
NoEncodingDialog可选Variant为 True,如果无法识别文本编码,则跳过显示 Word 所显示的“编码”对话框。 默认值为 False。

也可以参考https://docs.microsoft.com/zh-cn/office/vba/api/word.documents.open,上面有详细介绍。

C#操作Word (2)-- 打开&关闭Word文档 OK,接着上一篇“Word对象模型”,本文正式开始在VS2010中使用C#语言操作Word2007. 不是十分了解Word对象模型的朋友,请参考上一篇文章,或者下载:C#操作Word2007.pdf。 ----------------------------------华丽分割-------------------------------------------- 1.添加Refer 阅读详情

相关推荐

c#读取word文档

读取word文档得使用com组件:Microsoft Word 12.0 object library 由于office的本不同,组件的版本也会不同,我电脑上装的office2007 所以版本是12.0 使用该组件提供的类和方法来读取Word文档 首先在项目中添加com引用: 然后可以用Microsoft.Office.Interop.Wrod.Application来访问w

一点一滴 2万+

用 c# 来操作WORD的经验总结

用 c# 来操作WORD的经验总结

weixin_43931979的博客 2790

利用C#向word文档中写入数据

  一.新建WORD模板 完全安装Word 2003       新建一个word,选中视图--工具栏--窗体,点击文字型窗体域添加一个域。双击新添加的域,默认文字填写你要显示的文字,域设置--书签填入一个标签名,用于在程序中识别这个域  二.添加COM引用---Microsoft  Word  11.0  Object Library  三 .添加命名空间---using Micro

A1027的专栏 8601

C# 打开word

<br />Word中几个重要的对象介绍: Application对象表示 Microsoft Office Word 2003应用程序本身。每次编写代码时,都应从Application对象开始。可以从Application对象访问Word公开的所有其他对象和集合,以及Application对象自身的属性和方法。 在Word中处理某个特定文档时,这个文档就称为活动文档,并且可通过Application对象的ActiveDocument属性引用。所有的Word Document对象同时也是Applicatio

haoxiang110的专栏 870

C#利用内置的word五大对象操作word文档

public class WordHelper { ApplicationClass app = null; //定义应用程序对象 Document doc = null; //定义 word 文档对象 public void OpenDocument(strin

生面别开 4325

c# 可反复打开word2003,word2007文档方法,可直接使用

//最近开发公文排版软件,首次接触office2007,网上很多都是office2003的东西,且不全,因客户需求反复打开word文档,就编写了此方法,希望给有类似需求的码农提供方便。

solider0552的博客 986

判断Word是否已打开

#region 判断Word是否已打开//原理:判断文件夹是否存在文件打开状态的文件 private bool IsOpenDoc(string strFileName)//完整路径 { string strFileNameTemp = ""; int iLastSplitIndex = strFileName.LastIndexOf(@"\") + 1;

E_say_de 1807

如何在C#下利用RichTextBox打开一个有文字格式和图片的Word文档

小知识点:.Net Framework 4.0 和.Net Framework 4.0 Client Profile区别:       .NET Framework Client Profile是.NET Framework的裁剪版本。它面向客户端应用程序。它提供 Windows Presentation Foundation (WPF)、Windows 窗体、Windows Communica

Search,Research 7494

如何判断一个文件是否正在被使用

这段时间在做文件操作方面的工作.虽然看似简单,实际却很烦琐,容易出现问题,加之测试也不是很方便. 有时要向文件写入东西,在打开文件前不单要判断文件是否存在,还要判断文件是否被别人使用.代码如下: 1usingSystem;2usingSystem.Collections.Generic;3usingSystem.IO;45publicclassFileUseT...

weixin_30443813的博客 621

C#中打开word 文件并在richTextBox中显示

void OpenNewChildForm() { OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "(文本文件)|*.txt|(word文件)|*.doc"; ofd.FilterIndex = 1; if (ofd.Sh

chwei_cson的专栏 6664

C#在WinForm中操作Word文档的实现

Word应用程序对象是Microsoft Office Word应用程序的顶级对象,它可以被用来访问Word中的所有可用对象,比如文档、范围、视图等。它类似于一个容器,内含应用程序的所有文档实例和其他相关对象。在.NET环境下,Word对象模型暴露于Microsoft.Office.Interop.Word命名空间中,使C#开发者能够方便地调用和操作。通过操作Word应用程序对象,开发者可以编程实现文档的创建、打开、保存、打印以及更多的高级功能,例如更改文档结构、插入图形元素、设置文本格式等。

weixin_33628677的博客 1694

打开word文档

打开word文档的代码如下:System.Diagnostics.Process.Start("文档路径");

wangxue_6的专栏 500

c#打开word文档及读取word文档

c#打开word文档及读取word文档

C# 读取并显示word文档中的内容

我想将信道模型的介绍以及分析的情况,都在C#的程序设计中进行实现。然后就想到了将word文档直接显示到窗体中,并且有滚动条可以拉动进行查看。搜集了一些资料之后找到了合适的方法——利用RichTextBox打开一个有文字格式和图片的Word文档。 1.添加引用 要加入word文档,就需要在”解决方案资源管理器”的”引用”中加入”Microsoft Word 12.0 Object Library ”...

pan的博客 2万+

ATE测试基础——直流参数测试

芯片测试在发展过程中诞生了许多术语,初次接触的人大部分都会被绕晕。因此为方便广大读者理解,在开始介绍测试项之前,需要对测试领域的名词进行解释。还有部分较为抽象的内容,需要略作展开。DUT——Device Under Test,正在被测试的器件Pin——器件引脚,信号引脚分为输入,输出,三态和双向四类,负责与外界进行信息交互;电源引脚分为电源和地两类,结构与信号引脚不同,负责给器件内部运行和外部输出提供电平。输入:在外部信号和器件内部逻辑之间起缓冲作用的信号输入通道;

你骄傲地飞远的博客 1万+

Verilog使用inout信号的方法

在FPGA的设计过程中,有时候会遇到双向信号(既能作为输出,也能作为输入的信号叫双向信号)。比如,IIC总线中的SDA信号就是一个双向信号,QSPI Flash的四线操作的时候四根信号线均为双向信号。在Verilog中用关键字inout定义双向信号,这里总结一下双向信号的处理方法。  实际上,双向信号的本质是由一个三态门组成的,三态门...

qq_41687938的博客 1万+

c# 打开word文件

引用Microsoft Office 14.0 Object Library Microsoft Word 14.0 Object Library using MSWord = Microsoft.Office.Interop.Word; 定义private MSWord.Application m_word; private MSWord.Document m_doc; 事件         ...

fanohaigua的专栏 1万+

医学成像学习笔记(一):核磁共振成像(MRI)k空间为何是图像频谱详解

前言   k空间是核磁共振成像图像重建的核心,可能很多人像笔者一样第一次学时会非常疑惑,为何k空间是图像的频域空间,观其填充过程,明明是空域信号的采样填充呀。网上很少有文章讨论这个问题,所以笔者在此写下自己的理解,供大家参考。 MRI位置编码   现在的MRI一次扫描的是一个断层或者多个断层,所谓断层就是一个有厚度的面,通过z方向梯度场来选择。我们扫描一个断层的目的是为了获得该断层各位置的质子情况,它们携带着组织的性质信息,反应出来的就是信号强度。如果整个断层都采用相同的磁场强度,而我们只能得到一个断

意疏的学习笔记 1万+

C#输出Word文档

总结C#对Word文档的常用操作:按模板创建和动态创建,动态生成表格和目录等

focus_yang的专栏 3865

腾讯Android开发面试准备指南及参考答案

腾讯元宝高级Android开发职位面试准备指南 该职位要求扎实的Kotlin基础、架构设计能力和性能优化经验,重点关注Android客户端开发。面试流程约3轮,支持线上面试,流程较快。候选人需准备以下核心内容: 基础技术:Kotlin特性、Android开发生命周期、多线程编程 架构设计:MVVM/MVI模式应用、组件化解耦方案 性能优化:流畅度提升、内存管理、启动时间优化等实战案例 加分技能:Jetpack Compose开发、音视频处理、跨平台开发经验 建议结合项目经验准备具体案例,突出技术深度和问题解

郑伟强dev的专栏 1194

R语言深度学习实战:基于YOLO的目标检测

目标检测是计算机视觉领域的一项任务,旨在识别图像或视频中的物体,并确定它们的位置。与图像分类不同,目标检测要求模型能够识别多个物体,并为每个物体提供边界框(bounding box)的位置信息。这种任务在众多应用中都具有重要价值,例如自动驾驶、安防监控、物体跟踪等。YOLO(You Only Look Once)是一种非常流行的目标检测算法,它在速度和准确性之间取得了良好的平衡。与传统的目标检测方法不同,YOLO将目标检测任务视为回归问题,直接从输入图像中预测目标的类别和位置信息。

YOLO 330

C#打开Word

第一篇是介绍相关的函数 转自:http://blog.youkuaiyun.com/jinhai735/article/details/6834074 Word中几个重要的对象介绍:        Application对象表示 Microsoft Office Word 2003应用程序本身。每次编写代码时,都应从Application对象开始。可以从Application对象访问Word公开的所有其他

数学屌丝走在it的道路上 1677

69页完整版智慧港口综合解决方案

智慧港口需求4港机远程操控等自动化改造需求自动化码头AGV无线通信及专用视频系统需求安全生产视频监控类需求港机RCMS及设备管理需求岸边智能理货码头三维全景应用智慧港口解决方案5自动化码头AGV/跨运车/无人集卡无线接入港机远控视觉及冗余无线通信视觉集卡防吊起系统集装箱码头岸边智能理货港机RCMS系统无线接入港机智能化管理(无线高清视频监控、一键报警、远程抄表系统)港口拖轮无线接入岸边溢油监测系统TD-LTE覆盖及业务终端接入港口生产管理系统港口可视化集群调度港口GiNMS综合网络设备智能管理全球作业效率最

zuoan1993的博客 2128

C# 从Word文档和各种Word元素中提取文本

本文介绍了如何使用C#从Word文档和各种Word元素(如章节、段落、页面、行、表格、页眉页脚等)中提取文本内容。包含详细的步骤介绍和代码示例。

SunnyDays1011的博客 2264

【MATLAB-app】csdn上第一套关于matlab appdesigner界面设计 系列“视频课”来啦~~

写作时间: 2020-12-10 标题: 01_为什么推荐你学习appdesigner? 目录: 1.什么是appdesigner? 2.appdesigner能干什么,有什么好处? 3.怎么学习?保证你一周内能够学会! 4.我的课程总目录 5.重磅来袭(如何获取学习资料代码+文档+视频) 正文: 1.什么是appdesigner? 2.appdesigner能干什么,有什么好处? 3.怎么学习?保证你一周内能够学会! 4.我的课程总目录 5.重磅来袭(如何获取学习资料代码+文档+视频) THE END

wind 2万+

【3D Slicer】的小白入门使用指南一

3D Slicer 是一个免费的开源软件平台,用于医学、生物医学和其他 3D 图像的可视化、处理、分割、配准和分析。Slicer 的功能包括:读/写。

图挖掘领域,新晋砖家 ☞ 未来可期,欢迎和静静一起学习交流吖 5553
上一篇: halcon 4种分类器(MLP,SVN,GMM,K-NN)优缺点:
下一篇: HObject 转HRegion 、HXLDCont
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值