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

简介: 转自博客: http://blog.csdn.net/michellehsiao/article/details/7684309 小知识点:.Net Framework 4.0 和.Net Framework 4.0 Client Profile区别:       .NET Framework Client Profile是.NET Framework的裁剪版本。

转自博客:
http://blog.csdn.net/michellehsiao/article/details/7684309

小知识点:.Net Framework 4.0 和.Net Framework 4.0 Client Profile区别

      .NET Framework Client Profile是.NET Framework的裁剪版本。它面向客户端应用程序。它提供 Windows Presentation Foundation (WPF)、Windows 窗体、Windows Communication Foundation (WCF)和 ClickOnce 功能的简化子集。这可以为面向.NET Framework Client Profile 的 WPF、Windows 窗体、WCF 和控制台应用程序实现快速部署方案。

主要内容:

        当在 Visual Studio 2010 建立新项目时,如果发现 [添加引用] 中没有列出原本应该列出的组件时,可以先检查是否是项目的目标框架是否设成了 .NET 4.0 Client Profile (例如 System.Web.dll 就不在 .NET 4.0 Client Profile 套件中)。

1、添加引用:COM组件下的Microsoft Word 11.0 Object Library ,然后会出现Microsoft  Office Core和Word以及VBIDE的引用,如下图

2、修改项目属性嵌入互操作类型为false,

3、接着在命名空间中写入如下内容:

这样就可以顺利使用下面代码,而不会出错!

    Word.ApplicationClass app = new Word.ApplicationClass();
    Word.Document doc = null;
 
[csharp]  view plain copy
  1. //用richTextBox打开带格式的word文档。  
  2. //先打开word文档,全选其中的内容并保存的剪切板中,最后在richTextBox中粘贴数据,并关闭文档,支持图片和文字格式显示  
  3. public void OpenWord(string fileName)  
  4. {  
  5.     Word.ApplicationClass app = new Word.ApplicationClass();  
  6.     Word.Document doc = null;  
  7.     object missing = System.Reflection.Missing.Value;  
  8.     object File = fileName;  
  9.     object readOnly = false;  
  10.     object isVisible = true;  
  11.     try  
  12.     {  
  13.         doc = app.Documents.Open(ref File, ref missing, ref readOnly,  
  14.          ref missing, ref missing, ref missing, ref missing, ref missing,  
  15.          ref missing, ref missing, ref missing, ref isVisible, ref missing,  
  16.          ref missing, ref missing, ref missing);  
  17.   
  18.         doc.ActiveWindow.Selection.WholeStory();//全选word文档中的数据  
  19.         doc.ActiveWindow.Selection.Copy();//复制数据到剪切板  
  20.         richTextBox1.Paste();//richTextBox粘贴数据  
  21.         //richTextBox1.Text = doc.Content.Text;//显示无格式数据  
  22.     }  
  23.     finally  
  24.     {  
  25.         if (doc != null)  
  26.         {  
  27.             doc.Close(ref missing, ref missing, ref missing);  
  28.             doc = null;  
  29.         }  
  30.   
  31.         if (app != null)  
  32.         {  
  33.             app.Quit(ref missing, ref missing, ref missing);  
  34.             app = null;  
  35.         }  
  36.     }  
  37. }  

修改RichTextBox内容后,另存为功能实现代码如下:
[csharp]  view plain copy
  1. public void SaveAsWord(string fileName)  
  2. {  
  3.     Word.ApplicationClass app = new Word.ApplicationClass();  
  4.     Word.Document doc = null;  
  5.     object missing = System.Reflection.Missing.Value;  
  6.     object File = fileName;  
  7.     try  
  8.     {  
  9.         doc = app.Documents.Add(ref missing, ref missing, ref missing, ref missing);  
  10.   
  11.         doc.ActiveWindow.Selection.WholeStory();//全选  
  12.         richTextBox1.SelectAll();  
  13.         Clipboard.SetData(DataFormats.Rtf, richTextBox1.SelectedRtf);//复制RTF数据到剪贴板   
  14.         doc.ActiveWindow.Selection.Paste();  
  15.   
  16.         doc.SaveAs(ref File, ref missing, ref missing,  
  17.             ref missing, ref missing, ref missing,  
  18.             ref missing, ref missing, ref missing,  
  19.             ref missing, ref missing, ref missing,  
  20.             ref missing, ref missing, ref missing,  
  21.             ref missing);  
  22.     }  
  23.     finally  
  24.     {  
  25.         if (doc != null)  
  26.         {  
  27.             doc.Close(ref missing, ref missing, ref missing);  
  28.             doc = null;  
  29.         }  
  30.   
  31.         if (app != null)  
  32.         {  
  33.             app.Quit(ref missing, ref missing, ref missing);  
  34.             app = null;  
  35.         }  
  36.     }  
  37. }  
相关文章
|
3月前
|
数据采集 JavaScript C#
C#图像爬虫实战:从Walmart网站下载图片
C#图像爬虫实战:从Walmart网站下载图片
|
1月前
|
XML C# 开发工具
C# 删除Word文档中的段落
【11月更文挑战第3天】本文介绍了两种方法来操作 Word 文档:一是使用 `Microsoft.Office.Interop.Word` 库,适用于 Windows 环境下操作 Word 文档,需引用相应库并在代码中引入命名空间;二是使用 Open XML SDK,适用于处理 .docx 格式的文档,通过引用 `DocumentFormat.OpenXml` 库实现。文中提供了示例代码,展示了如何打开、删除段落并保存文档。
|
2月前
|
XML JSON 前端开发
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
494 0
|
4月前
|
数据库
C#Winform使用NPOI获取word中的数据
C#Winform使用NPOI获取word中的数据
195 2
|
6月前
|
C#
技术经验分享:c#拆分字符串英文和数字(包括国外所以文字)
技术经验分享:c#拆分字符串英文和数字(包括国外所以文字)
37 0
技术经验分享:c#拆分字符串英文和数字(包括国外所以文字)
|
7月前
|
存储 算法 C#
C# 生成指定图片的缩略图
C# 生成指定图片的缩略图
|
7月前
|
C# 开发工具 数据安全/隐私保护
C# 给图片添加文字水印
C# 给图片添加文字水印
|
7月前
|
开发框架 .NET C#
C# 自动填充文字内容到指定图片
C# 自动填充文字内容到指定图片
|
7月前
|
XML 存储 C#
C# xml文档反序列化记事
本文介绍了使用XmlSerializer进行XML序列化和反序列化的关键点。包括:1) 以独占方式读取XML文件以避免并发问题;2) 当元素名与类型名不一致时,可通过`[XmlArrayItem]`指定元素名,或创建继承自原始类型的子类;3) 处理DateTime反序列化错误,通过中间字符串属性转换;4) 提到了常用C#特性如`[XmlRoot]`, `[XmlElement]`, `[XmlAttribute]`, `[XmlIgnore]`和`[XmlArrayItem]`的作用。
|
1月前
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
34 3