【问题标题】:Import doc and docx files in .Net and C#在 .Net 和 C# 中导入 doc 和 docx 文件
【发布时间】:2013-07-28 03:06:29
【问题描述】:

我正在编写一个文本编辑器,我想添加导入 .doc 和 .docx 文件的可能性。我知道我可以使用 OLE 自动化,但是如果我使用最近的 OLE 库,它不适用于那些使用旧版本 Word 的人,如果我使用旧版本,它将无法阅读.docx 文件。 有任何想法吗? 谢谢

编辑:另一种解决方案是,就像我的应用程序使用 HTML 和 RTF 一样,使用命令行将 .doc 和 .docx 文件转换为其中一种格式,如下所示:http://www.snee.com/bobdc.blog/2007/09/using-word -for-command-line-co.html

【问题讨论】:

  • 我希望你的文本编辑器是一个winform应用?我们不希望您遇到服务器端问题:support.microsoft.com/kb/257757
  • 是的,它是一个 Windows 窗体应用程序

标签: .net ms-word ms-office


【解决方案1】:

它适用于 Office 2003 PIA,在我运行 Office 2010 的计算机上进行了测试:

using System.IO;
using System.Reflection;
using Microsoft.Office.Interop.Word;

public string GetHtmlFromDoc(string path)
    var wordApp = new Application {Visible = false};

//Cargar documento
            object srcPath = path;
            var wordDoc = wordApp.Documents.Open(ref srcPath);

            //Guardarlo en HTML
            string destPath = Path.Combine(Path.GetTempPath(), "word" + (new Random().Next()) + ".html");
            if (wordDoc != null)
            {
                object oDestPath = destPath;
                object exportFormat = WdSaveFormat.wdFormatHTML;
                wordDoc.SaveAs(ref oDestPath, ref exportFormat);
            }

            //Cerrar
            wordDoc.Close();
            wordApp.Quit();

            //Comprobar que el archivo existe);
            if (File.Exists(destPath))
            {
               return File.ReadAllText(destPath, Encoding.Default);
}
return null;
}

【讨论】:

    【解决方案2】:

    为什么不使用Office Primary Interop Assemblies (PIA)?

    我认为您必须决定要支持的 Word 版本。我建议您将 Word 2003 定为最低。这将允许您使用 Office 2003 PIA 并针对它们进行编程。在机器中安装 PIA 也会安装绑定重定向,因此它们可以在 Word 上与较新版本一起使用。通过 Office 2003 PIA 使用 Word 2007 或 2010 打开 .docx 文件应该没有问题,虽然我自己没有尝试过。

    【讨论】:

    • 因为正如我所说,根据我使用的这些库的版本,要求用户拥有与库版本相同或更新的 Word 版本。
    • 我以为你在谈论 OLE 自动化。无论如何,我正在编辑我的答案以草拟版本问题的解决方案。 :-)
    • 一个解决方案是包括到目前为止所有的 OLE 自动化库:P
    • 我同意你的观点,Office 2003 应该是最低的。但肯定必须安装兼容包才能使用 .docx
    • 不,因为您不会使用 Word 2003 打开 .docx。使用 Office 2003 的计算机将只能打开 2003 格式的 .doc,而使用 Office 2007 的计算机将能够打开 .doc 和 .doc。文档。不过,一切都将通过 Office 2003 PIA 完成。
    【解决方案3】:

    您应该能够使用 .NET 中的 OpenXML 库或 xpath 来读取/导入 docx 文件的内容。

    【讨论】:

    • 好回复,我认为 OP 正在寻找更多的 Word 版本中立方法。如“后期绑定”以获得更确定的版本独立性。
    • 我需要一些更基本的东西,将word文件转换为html就足够了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 2016-11-20
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多