C# 在richtextbox中加载密码word文档

C# 在richtextbox中加载密码word文档,c#,winforms,richtextbox,C#,Winforms,Richtextbox,我在richtextbox中使用打开word文档 richTextBoxEx1.LoadFile(@"c:\3.docx", RichTextBoxStreamType.PlainText); 但是如何打开密码word文档呢? 如何绕过richtextbox的密码?您可以使用interop打开受密码保护的word文档,然后将其保存为rft格式(不受密码保护),并且可以无流程显示 首先添加对Microsoft.Office.Interop.Word的引用 然后创建一个带有RichTextBox的

我在richtextbox中使用打开word文档

richTextBoxEx1.LoadFile(@"c:\3.docx", RichTextBoxStreamType.PlainText);
但是如何打开密码word文档呢?
如何绕过richtextbox的密码?

您可以使用interop打开受密码保护的word文档,然后将其保存为rft格式(不受密码保护),并且可以无流程显示

首先添加对Microsoft.Office.Interop.Word的引用

然后创建一个带有
RichTextBox
的表单,并使用以下代码:

private delegate void OpenRtfDelegate();

private void Form1_Load(object sender, EventArgs e)
{
    try
    {
        //Create word application
        var word = new Microsoft.Office.Interop.Word.Application();

        //Attach an eventn handler to word_Quit to open rft file after word quit.
        //If you try to load rtf before word quit, you will receive an exception that says file is in use.
        ((Microsoft.Office.Interop.Word.ApplicationEvents4_Event)word).Quit += word_Quit; 

        //Open word document
        var document = word.Documents.Open(@"Path_To_Word_File.docx", PasswordDocument: "Password_Of_Word_File");

        //Save as rft
        document.SaveAs2(@"Path_To_RFT_File.rtf", FileFormat: Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatRTF);

        //Quit word
        ((Microsoft.Office.Interop.Word._Application)word).Quit(SaveChanges: Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

private void word_Quit()
{
    //You should load rtf this way, because word_Quit is running in a differet thread
    this.richTextBox1.BeginInvoke(new OpenRtfDelegate(OpenRtf));
}

private void OpenRtf()
{
    this.richTextBox1.LoadFile(@"Path_To_RFT_File.rtf");
}

您可以根据需要格式化和修改代码

我建议您在代码的早期加载该文件(也许您可以在那里输入密码),然后通过文本框将word documentOffice Interop中的RTF通常被许多人认为是“贬值的”,被认为是“现代的”方法,并增加了一个好处,即程序不需要在机器上安装Word即可工作。@ScottChamberlain如果不使用Office就可以完成工作,您是对的。但是在这里,开发人员需要将word转换为rtf,正如前面提到的,OpenXMLSDK本身不允许转换为其他文档格式,因此应该考虑其他选项,包括Office互操作。OpenXMLSDK不支持密码documents@MahmoudElgindy我不熟悉OpenXMLSDK。如果您知道任何显示它不支持密码保护文档的引用,最好在评论中发布它。OpenXMLSDK在这里的另一个问题是,它不支持转换为rtf。在Microsoft站点上,除了此处询问的问题之外,没有任何代码可用于打开受密码保护的docx