如何在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 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;

 

//用richTextBox打开带格式的word文档。
//先打开word文档,全选其中的内容并保存的剪切板中,最后在richTextBox中粘贴数据,并关闭文档,支持图片和文字格式显示
public void OpenWord(string fileName)
{
    Word.ApplicationClass app = new Word.ApplicationClass();
    Word.Document doc = null;
    object missing = System.Reflection.Missing.Value;
    object File = fileName;
    object readOnly = false;
    object isVisible = true;
    try
    {
        doc = app.Documents.Open(ref File, ref missing, ref readOnly,
         ref missing, ref missing, ref missing, ref missing, ref missing,
         ref missing, ref missing, ref missing, ref isVisible, ref missing,
         ref missing, ref missing, ref missing);

        doc.ActiveWindow.Selection.WholeStory();//全选word文档中的数据
        doc.ActiveWindow.Selection.Copy();//复制数据到剪切板
        richTextBox1.Paste();//richTextBox粘贴数据
        //richTextBox1.Text = doc.Content.Text;//显示无格式数据
    }
    finally
    {
        if (doc != null)
        {
            doc.Close(ref missing, ref missing, ref missing);
            doc = null;
        }

        if (app != null)
        {
            app.Quit(ref missing, ref missing, ref missing);
            app = null;
        }
    }
}


修改RichTextBox内容后,另存为功能实现代码如下:

public void SaveAsWord(string fileName)
{
    Word.ApplicationClass app = new Word.ApplicationClass();
    Word.Document doc = null;
    object missing = System.Reflection.Missing.Value;
    object File = fileName;
    try
    {
        doc = app.Documents.Add(ref missing, ref missing, ref missing, ref missing);

        doc.ActiveWindow.Selection.WholeStory();//全选
        richTextBox1.SelectAll();
        Clipboard.SetData(DataFormats.Rtf, richTextBox1.SelectedRtf);//复制RTF数据到剪贴板 
        doc.ActiveWindow.Selection.Paste();

        doc.SaveAs(ref File, ref missing, ref missing,
            ref missing, ref missing, ref missing,
            ref missing, ref missing, ref missing,
            ref missing, ref missing, ref missing,
            ref missing, ref missing, ref missing,
            ref missing);
    }
    finally
    {
        if (doc != null)
        {
            doc.Close(ref missing, ref missing, ref missing);
            doc = null;
        }

        if (app != null)
        {
            app.Quit(ref missing, ref missing, ref missing);
            app = null;
        }
    }
}

 

from:

https://blog.csdn.net/michellehsiao/article/details/7684309

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值