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