原文:C#操作Word文档(加密、解密、对应书签插入分页符)

最近做一个项目,客户要求对已经生成好的RTF文件中的内容进行分页显示,由于之前对这方面没有什么了解,后来在网上也找了相关的资料,并结合自己在MSDN上面的查找,后来总算把问题给解决掉啦。下面对C#操作Word文档(加密、解密、插入分页符)做一个简单的总结,希望对一些朋友有所帮忙吧。^_^

写代码之前,需要引用对应的DLL文件:

1、Interop.Microsoft.Office.Interop.Word.dll  (网上可以下载)

2、mscorlib.dll  (添加引用--->.NET中即可找到)

  1. using Microsoft.Office.Interop.Word;
  2. using MSWord = Microsoft.Office.Interop.Word;
  3. using System.Reflection;
  4.  
  5. private void button1_Click(object sender, System.EventArgs e)
  6. {
  7. //Word文档保护密码
  8. string Pass = "ITIS@997168";
  9. object PassWord = Pass;
  10. MSWord.Application wordApp; //Word应用程序变量
  11. MSWord.Document wordDoc; //Word文档变量
  12. try
  13. {
  14. object Nothing = Missing.Value; //初始化
  15. wordApp = new MSWord.ApplicationClass();
  16.  
  17. // 打开已存在的Word
  18. object FileName = @"E:\archive\CMPLatest_2117_230614-1053.Rtf";
  19. object readOnly = false;
  20. object isVisible = true;
  21. object objFalse = false;
  22.  
  23. 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);
  24.  
  25. //激活Word文档
  26. wordDoc.Activate();
  27. //判断是否有密码
  28. if (wordDoc.HasPassword)
  29. {
  30. wordDoc.Password = null;
  31. }
  32.  
  33. //检查是否为Word文档设置保护功能,没有设置保护功能,就解除密码保护
  34. if (wordDoc.ProtectionType != WdProtectionType.wdNoProtection)
  35. {
  36. wordDoc.Unprotect(ref PassWord);
  37. }
  38.  
  39. //跳转到指定书签
  40. object toMark = MSWord.WdGoToItem.wdGoToBookmark;
  41. //分页符
  42. object oPageBreak = Microsoft.Office.Interop.Word.WdBreakType.wdPageBreak;
  43.  
  44. //定义书签名称 PartB
  45. object BookMarkName_b = "bmf_b";
  46. wordDoc.ActiveWindow.Selection.GoTo(ref toMark, ref Nothing, ref Nothing, ref BookMarkName_b);
  47. //插入分页符
  48. wordDoc.ActiveWindow.Selection.InsertBreak(ref oPageBreak);
  49.  
  50. //定义书签名称 PartC1
  51. object BookMarkName_c1 = "bmf_c1";
  52. wordDoc.ActiveWindow.Selection.GoTo(ref toMark, ref Nothing, ref Nothing, ref BookMarkName_c1);
  53. //插入分页符
  54. wordDoc.ActiveWindow.Selection.InsertBreak(ref oPageBreak);
  55.  
  56. //定义书签名称 PartC2
  57. object BookMarkName_c2 = "bmf_c2";
  58. wordDoc.ActiveWindow.Selection.GoTo(ref toMark, ref Nothing, ref Nothing, ref BookMarkName_c2);
  59. //插入分页符
  60. wordDoc.ActiveWindow.Selection.InsertBreak(ref oPageBreak);
  61.  
  62. //对Word文档进行加密保护
  63. if(PassWord.ToString() != null)
  64. {
  65. wordDoc.Protect(WdProtectionType.wdAllowOnlyReading, ref objFalse, ref PassWord, ref Nothing, ref Nothing);
  66. }
  67.  
  68. //将插入分页符后的Word文档保存一下
  69. 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);
  70.  
  71. //标记为最终状态,禁止弹出对话框
  72. //wordApp.DisplayAlerts = WdAlertLevel.wdAlertsNone;
  73. //标记为最终状态
  74. //wordDoc.Final = true;
  75.  
  76. //关闭Word文档
  77. wordDoc.Close(ref Nothing, ref Nothing, ref Nothing);
  78. wordApp.Quit(ref Nothing, ref Nothing, ref Nothing);
  79. }
  80. catch(Exception ex)
  81. {
  82.  
  83. }
  84. }

C#操作Word文档(加密、解密、对应书签插入分页符)的更多相关文章

  1. iText操作word文档总结

    操作word文档的工具有很多,除了iText之外还有POI,但是POI擅长的功能是操作excel,虽然也可以操作word,但是能力有限,而且还有很多的bug,技术并不成熟,下面就重点介绍一种操作wor ...

  2. 利用Python操作Word文档【图片】

    利用Python操作Word文档

  3. Java文件操作系列[3]——使用jacob操作word文档

    Java对word文档的操作需要通过第三方组件实现,例如jacob.iText.POI和java2word等.jacob组件的功能最强大,可以操作word,Excel等格式的文件.该组件调用的的是操作 ...

  4. (转)C#操作Word文档

    原文1地址:http://www.cnblogs.com/lantionzy/archive/2009/10/23/1588511.html 原文2地址: http://www.cnblogs.com ...

  5. QTP操作word文档

    QTP可以对word文档进行操作,这里最主要展示的是向word文档写入内容,并保存的功能. Option explicit Dim wordApp Set wordApp = createobject ...

  6. c#中操作word文档-四、对象模型

    转自:http://blog.csdn.net/ruby97/article/details/7406806 Word对象模型  (.Net Perspective) 本文主要针对在Visual St ...

  7. python 操作word文档

    因为工作需要操作一些word文档,记录一下学习思路 #-*- encoding: utf8 -*- import win32com from win32com.client import Dispat ...

  8. 2.QT中操作word文档

     Qt/Windows桌面版提供了ActiveQt框架,用以为Qt和ActiveX提供完美结合.ActiveQt由两个模块组成: A   QAxContainer模块允许我们使用COM对象并且可以 ...

  9. C# 操作Word 文档——添加Word页眉、页脚和页码

    在Word文档中,我们可以通过添加页眉.页脚的方式来丰富文档内容.添加页眉.页脚时,可以添加时间.日期.文档标题,文档引用信息.页码.内容解释.图片/LOGO等多种图文信息.同时也可根据需要调整文字或 ...

随机推荐

  1. hadoop出现namenode running as process 18472. Stop it first.

    hadoop出现namenode running as process 18472. Stop it first.等等,类别似几个的出现. namenode running as process 32 ...

  2. php阅读csv文件类

    php处理csv文件类: http://www.php100.com/cover/php/540.html <?php define("CSV_Start", 0); def ...

  3. ProducerConsumerDemo

    package algorithm; public class ProducerConsumer { public static void main(String[] args) { SyncStac ...

  4. Android属于查询执行情况的电话号码

    这部分是昨天学习,但是因为眼所以现在到眼睛超负荷,以后要合理规划时间. 现在里面的手机号码归属地查询主要通过两种途径:1.网络查询.2.匹配本地归属地数据库. 我认为最好的两个方法的结合,在进行联网查 ...

  5. Java 理论与实践: 正确使用 Volatile 变量(转)

    Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”:与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少, ...

  6. nyoj 322 Sort 【树阵】

    这个问题实际上是在测试树的数组. 代码: #include <cstdio> #include <cstring> int c[1005]; int lowbit(int x) ...

  7. 通过gradle运行测试脚本(转)

    练习一:HelloWorld 创建项目,源代码在src/main/java,测试源代码在src/test/java build.gradle的脚本: apply plugin: 'java' depe ...

  8. 使用方便 正则表达式grep,sed,awk(一)

    一些无稽之谈: 对于正则表达式,永远似了解不明白,看到一些代码,脚本定期,awk,sed.心里总有点虚.主要是记不住.平时又没怎么用,也就没总结了. 如今有空,决定总结一下,顺便克服一下看到shell ...

  9. 【Linux&amp;Unix--文件描述叙事的性格和权柄】

    个人学习整理,如有不足之处,请不吝不吝赐教.转载请注明:@CSU-Max 系列博文:                      Linux&Unix学习第一弹 -- 文件描写叙述符与权限  L ...

  10. 接收一个IT招聘促销信息,试着想参加,有兴趣的可以携手并进,共同。

    时隆重举行! 招聘的企业: (个人认为,中智.也买酒还是非常有吸引力的) watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHdia2Zj/font/5a6L ...