在.Net和C#中导入doc和docx文件

时间:2010-12-20 23:38:45

标签: .net ms-word ms-office

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

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

3 个答案:

答案 0 :(得分:2)

它适用于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;
}

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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