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等多种图文信息.同时也可根据需要调整文字或 ...
随机推荐
- Windows 2008 R2安装.NET Framework 4提示灾难性故障解决方法
原因:WINDOWS 2008的安全设置方案取消了C盘根目录的Users权限,只给administrator和system权限,结果在打补丁时就无法更新(安装.net4需要安装windows6.1-K ...
- oracle Constraint[相似 constraint使用方法总结 I]
约束简单介绍 约束用于确保数据库数据满足特定的商业逻辑或者企业规则,假设定义了约束,而且数据不符 合约束,那么DML操作(INSERT.UPDATE.DELETE)将不能成功运行.约束包含NOT NU ...
- WPF学习(7)命令
在上一篇中,我们学习了WPF的路由事件,而在本节将学习一个更为抽象且松耦合的事件版本,即命令.最明显的区别是,事件是与用户动作相关联的,而命令是那些与用户界面想分离的动作,例如我们最熟悉的剪切(Cut ...
- gradle中使用cobertura做代码覆盖(转)
gradle很好用,但是默认是没有代码覆盖功能的,只好自己写.曾经在网上找到过别人的一段脚本,虽然也能用,但是有一些不爽的地方,一个原因是它不支持对层级工程中全部代码的覆盖,另一个原因是它用替换bui ...
- java注解(转)
java中元注解有四个: @Retention @Target @Document @Inherited: @Retention:注解的保留位置 @Retention(RetentionPolicy ...
- 如何解决Ora-04031错误(转)
诊断并解决ORA-04031 错误 当我们在共享池中试图分配大片的连续内存失败的时候,Oracle首先清除池中当前没使用的所有对象,使空闲内存块合并.如果仍然没有足够大单个的大块内存满足请求,就会产生 ...
- Python3.2官方文件翻译-工具列表和十进制浮点计算
8.7 列表工具 许多数据结构需要通过内置列表类型来满足.但,有时候在不同的性能取舍需要选择一个实现. Array模块能提供一个像列表的array对象,它只能存储同类数据而且更加简洁. 接下来样例展示 ...
- hdu 4915 Parenthese sequence 多校第五场
推断一个序列是否是有效是简单的. 可是推断序列是不是有多个解会出问题. 那么从i=0 ~l 假设读到问号,推断该问号成为(能否有效,该问号为)是否有效. 假设都有效,则必有多个解. 假设都无效,则无解 ...
- DevExpress XtraReports 入门四 创建 Web 报表
原文:DevExpress XtraReports 入门四 创建 Web 报表 本文只是为了帮助初次接触或是需要DevExpress XtraReports报表的人群使用的,为了帮助更多的人不会像我这 ...
- Swift——(三)Swift神奇的下划线
在Swift在.有许多神奇的下划线,在这里,我们将看到神奇的汇总,我希望能够帮助其他很多学习Swift朋友. @Author: twlkyao转载或者引用请保留此行. 1.格式化数字字面量 通 ...