C#操作Word文档(加密、解密、对应书签插入分页符)
原文:C#操作Word文档(加密、解密、对应书签插入分页符)
最近做一个项目,客户要求对已经生成好的RTF文件中的内容进行分页显示,由于之前对这方面没有什么了解,后来在网上也找了相关的资料,并结合自己在MSDN上面的查找,后来总算把问题给解决掉啦。下面对C#操作Word文档(加密、解密、插入分页符)做一个简单的总结,希望对一些朋友有所帮忙吧。^_^
写代码之前,需要引用对应的DLL文件:
1、Interop.Microsoft.Office.Interop.Word.dll (网上可以下载)
2、mscorlib.dll (添加引用--->.NET中即可找到)
using Microsoft.Office.Interop.Word;
using MSWord = Microsoft.Office.Interop.Word;
using System.Reflection; private void button1_Click(object sender, System.EventArgs e)
{
//Word文档保护密码
string Pass = "ITIS@997168";
object PassWord = Pass;
MSWord.Application wordApp; //Word应用程序变量
MSWord.Document wordDoc; //Word文档变量
try
{
object Nothing = Missing.Value; //初始化
wordApp = new MSWord.ApplicationClass(); // 打开已存在的Word
object FileName = @"E:\archive\CMPLatest_2117_230614-1053.Rtf";
object readOnly = false;
object isVisible = true;
object objFalse = false; wordDoc = wordApp.Documents.Open(ref FileName, ref Nothing, ref readOnly, ref Nothing, ref PassWord, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref isVisible, ref Nothing, ref Nothing, ref Nothing, ref Nothing); //激活Word文档
wordDoc.Activate();
//判断是否有密码
if (wordDoc.HasPassword)
{
wordDoc.Password = null;
} //检查是否为Word文档设置保护功能,没有设置保护功能,就解除密码保护
if (wordDoc.ProtectionType != WdProtectionType.wdNoProtection)
{
wordDoc.Unprotect(ref PassWord);
} //跳转到指定书签
object toMark = MSWord.WdGoToItem.wdGoToBookmark;
//分页符
object oPageBreak = Microsoft.Office.Interop.Word.WdBreakType.wdPageBreak; //定义书签名称 PartB
object BookMarkName_b = "bmf_b";
wordDoc.ActiveWindow.Selection.GoTo(ref toMark, ref Nothing, ref Nothing, ref BookMarkName_b);
//插入分页符
wordDoc.ActiveWindow.Selection.InsertBreak(ref oPageBreak); //定义书签名称 PartC1
object BookMarkName_c1 = "bmf_c1";
wordDoc.ActiveWindow.Selection.GoTo(ref toMark, ref Nothing, ref Nothing, ref BookMarkName_c1);
//插入分页符
wordDoc.ActiveWindow.Selection.InsertBreak(ref oPageBreak); //定义书签名称 PartC2
object BookMarkName_c2 = "bmf_c2";
wordDoc.ActiveWindow.Selection.GoTo(ref toMark, ref Nothing, ref Nothing, ref BookMarkName_c2);
//插入分页符
wordDoc.ActiveWindow.Selection.InsertBreak(ref oPageBreak); //对Word文档进行加密保护
if(PassWord.ToString() != null)
{
wordDoc.Protect(WdProtectionType.wdAllowOnlyReading, ref objFalse, ref PassWord, ref Nothing, ref Nothing);
} //将插入分页符后的Word文档保存一下
wordDoc.SaveAs(ref FileName, ref Nothing, ref Nothing, ref Nothing, ref objFalse, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref isVisible, ref Nothing, ref Nothing, ref Nothing, ref Nothing); //标记为最终状态,禁止弹出对话框
//wordApp.DisplayAlerts = WdAlertLevel.wdAlertsNone;
//标记为最终状态
//wordDoc.Final = true; //关闭Word文档
wordDoc.Close(ref Nothing, ref Nothing, ref Nothing);
wordApp.Quit(ref Nothing, ref Nothing, ref Nothing);
}
catch(Exception ex)
{ }
}
C#操作Word文档(加密、解密、对应书签插入分页符)的更多相关文章
- iText操作word文档总结
操作word文档的工具有很多,除了iText之外还有POI,但是POI擅长的功能是操作excel,虽然也可以操作word,但是能力有限,而且还有很多的bug,技术并不成熟,下面就重点介绍一种操作wor ...
- 利用Python操作Word文档【图片】
利用Python操作Word文档
- Java文件操作系列[3]——使用jacob操作word文档
Java对word文档的操作需要通过第三方组件实现,例如jacob.iText.POI和java2word等.jacob组件的功能最强大,可以操作word,Excel等格式的文件.该组件调用的的是操作 ...
- (转)C#操作Word文档
原文1地址:http://www.cnblogs.com/lantionzy/archive/2009/10/23/1588511.html 原文2地址: http://www.cnblogs.com ...
- QTP操作word文档
QTP可以对word文档进行操作,这里最主要展示的是向word文档写入内容,并保存的功能. Option explicit Dim wordApp Set wordApp = createobject ...
- c#中操作word文档-四、对象模型
转自:http://blog.csdn.net/ruby97/article/details/7406806 Word对象模型 (.Net Perspective) 本文主要针对在Visual St ...
- python 操作word文档
因为工作需要操作一些word文档,记录一下学习思路 #-*- encoding: utf8 -*- import win32com from win32com.client import Dispat ...
- 2.QT中操作word文档
Qt/Windows桌面版提供了ActiveQt框架,用以为Qt和ActiveX提供完美结合.ActiveQt由两个模块组成: A QAxContainer模块允许我们使用COM对象并且可以 ...
- C# 操作Word 文档——添加Word页眉、页脚和页码
在Word文档中,我们可以通过添加页眉.页脚的方式来丰富文档内容.添加页眉.页脚时,可以添加时间.日期.文档标题,文档引用信息.页码.内容解释.图片/LOGO等多种图文信息.同时也可根据需要调整文字或 ...
随机推荐
- [WF4.0 现实] WF4.0 Receive && Send
写这篇博客的目的正是由于这个receive和send使用一直很困惑,有应用程序的多个实例,但整体感觉很模糊认识.每一次遇到,再要弄清楚.如今将这send和receive结合我们之前做的实例(未使用WC ...
- 读书时间《JavaScript高级程序设计》二:面向对象
接着上次的进度,开始看第6章. 第6章 面向对象的程序设计 理解对象 创建自定义对象最简单的方式就是创建一个 Object 的实例,然后为它添加属性和方法. var person = new Obje ...
- 读书时间《JavaScript高级程序设计》一:基础篇
第一次看了<JavaScript高级程序设计>第二版,那时见到手上的书,第一感觉真是好厚的一本书啊.现在再次回顾一下,看的是<JavaScript高级程序设计>第三版,并记录一 ...
- 在Sql中使用Try Catch
原文:在Sql中使用Try Catch 今天在写sql中出现了!我想在sql使用trycatch吧! 哎..但是语法又记不住了! 那就清楚我们的google大师吧! 嘿,网上关于在sql中使用Try ...
- PowerShell 批量导入/导出Active Directory
PowerShell 批量导入/导出Active Directory 近期由于公司要求,须要导入20个供应商.20个客户到AD域中,刚開始手动添�了2个供应商,2个客户.可是感觉费时费 ...
- Makefile 中:= ?= += =的差别 和条件运行
一:在Makefile中常常看到obj-m := scull.o和KERNELDIR ?= /lib/modules/等不同的赋值方式,如今总结他们的差别: = 是最主要的赋值 := 是覆盖之前 ...
- Java中的逆变与协变(转)
看下面一段代码 Number num = new Integer(1); ArrayList<Number> list = new ArrayList<Integer>(); ...
- ProgressDialog(三)——代号为中心的屏幕上显示ProgressDialog(ProgressBar)
MainActivity如下面: package cc.testprogressdialog; import android.os.Bundle; import android.view.Gravit ...
- ssis t-sql返回值
原文:ssis t-sql返回值 sql类似如下,不需要使用return 语句,SQL语句的ConnectionType必须是"ADO.NET" select @proID=fie ...
- SharePoint 2010 中创建超链接到Pop-Up对话框
SharePoint 2010 中创建超链接到Pop-Up对话框 SharePoint 2010 推出了新式的带有阴影的弹出对话框,你感觉怎么样?我感觉倒是挺酷的.这样少打开了一个页面 ...