Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在.Net和C中导入doc和docx文件#_.net_Ms Word_Ms Office - Fatal编程技术网

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

在.Net和C中导入doc和docx文件#,.net,ms-word,ms-office,.net,Ms Word,Ms Office,我正在编写一个文本编辑器,我想添加导入.doc和.docx文件的可能性。我知道我可以使用OLE Automation,但如果我使用最新的OLE库,它将无法与那些使用旧版本Word的人一起工作,如果我使用旧版本,它将无法读取.docx文件。 有什么想法吗? 谢谢 编辑:另一个解决方案是,像我的应用程序使用HTML和RTF一样,使用命令行将.doc和.docx文件转换为以下格式之一:2007/09/using-word-for-command-line-co.HTML为什么不使用(PIAs) 我想你

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

编辑:另一个解决方案是,像我的应用程序使用HTML和RTF一样,使用命令行将.doc和.docx文件转换为以下格式之一:2007/09/using-word-for-command-line-co.HTML

为什么不使用(PIAs)


我想你必须决定你要支持哪个版本的Word。我建议你把Word 2003定为最低价。这将允许您使用Office2003PIA和针对它们的程序。在计算机中安装PIA也会安装绑定重定向,因此它们可以在Word上使用较新版本。通过Office 2003 PIA使用Word 2007或2010打开.docx文件应该没有问题,尽管我自己没有尝试过。

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

它与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;
}

我希望你大楼的文本编辑器是winform应用程序?我们不希望您遇到服务器端问题:是的,这是一个windows窗体应用程序,因为正如我所说的,根据我使用的这些库的哪个版本,要求用户拥有与库版本相同或更新的Word版本。我以为您说的是OLE自动化。无论如何,我正在编辑我的答案,以草拟版本问题的解决方案。:-)一种解决方案是包括迄今为止所有的OLE自动化库:我同意你的看法,Office2003应该是最低的。但它肯定必须安装兼容包才能与.docxNo一起使用,因为您不会用Word 2003打开.docx。使用Office 2003的计算机将只能打开2003格式的.doc,使用Office 2007的计算机将能够打开.doc和.docx。不过,一切都将通过Office 2003 PIA来完成。回答得好,我认为OP更多的是寻求一种文字版本中立的方法。。像“后期绑定”一样,我需要一些更基本的东西,将word文件转换成html就足够了