如何将.doc翻译成字符串
本文关键字:字符串 翻译 doc | 更新日期: 2023-09-27 18:19:30
有没有一种方法可以在不使用Microsoft COM组件的情况下将Microsoft word文档转换为字符串?我希望有其他方法来处理所有的超额加价。
编辑12/13/13:我们不想引用com组件,因为如果客户没有安装完全相同版本的office,它就无法工作。幸运的是,微软已经使2013年的word.interop.dll向后兼容。现在我们不必担心这个限制。一旦引用dll,我们可以执行以下操作:
/// <summary>Gets the content of the word document</summary>
/// <param name="filePath">The path to the word document file</param>
/// <returns>The content of the document</returns>
public string ExtractText(string filePath)
{
if (string.IsNullOrEmpty(filePath))
throw new ArgumentNullException("filePath", "Input file path not specified.");
if (!File.Exists(filePath))
throw new FileNotFoundException("Input file not found at specified path.", "filepath");
var resultText = string.Empty;
Application wordApp = null;
try
{
wordApp = new Application();
var doc = wordApp.Documents.Open(filePath, Type.Missing, true);
if (doc != null)
{
if (doc.Content != null && !string.IsNullOrEmpty(doc.Content.Text))
resultText = doc.Content.Text.Normalize();
doc.Close();
}
}
finally
{
if (wordApp != null)
wordApp.Quit(false, Type.Missing, false);
}
return resultText;
}
您需要使用一些库来实现您想要的:
- MS提供OpenXML SDK V 2.0(免费,仅限DOCX)
- Aspose.Words(商业、DOC和DOCX)
如果你手头有很多时间,那么编写.DOC解析器可能是可行的——.DOC规范可以在这里找到。
BTW:在类似服务器的场景(如ASP.NET或Windows Service或类似场景)中,MS不支持Office Interop-请参阅http://support.microsoft.com/default.aspx?scid=kb;EN-US;q257757#kb2!
假设您想要提取文档文件的文本内容,那么有一些命令行工具以及商业库。我们曾经用来搜索doc(而不是docx)文件(与搜索引擎sphider结合使用)的一个相当古老的工具是catdoc(也在这里),它是一个DOS工具,而不是Windows工具,但只要我们满足先决条件(文件名格式8.3),它就对我们有效。
如果你能负担得起29美元的话,一个商业产品文档2文本。
对于较新的docx格式,可以使用基于Perl的工具docx2txt。
当然,如果你想从c#运行这些工具,你需要触发一个外部进程——请在这里查看可靠的解释。
Spire.doc是一个相当昂贵但功能非常强大的访问doc和docx内容的工具,但它的功能远远超出了您的需要。它是一个.NET库,使用起来更方便。
如果您指的是旧的DOC文件格式,那么这是一个很大的问题,因为它是MS指定的二进制文件格式,我必须说我完全同意RQDQ的评论。
但是,如果您引用的是DOCX文件格式,那么您可以在没有MSCOM组件或任何其他组件的情况下实现这一点,只需使用纯.NET.
检查以下解决方案:
http://www.codeproject.com/Articles/20529/Using-DocxToText-to-Extract-Text-from-DOCX-Fileshttp://www.dotnetspark.com/kb/Content.aspx?id=5633