【问题标题】:Reading doc and docx files using C# without having MS Office installed on server使用 C# 读取 doc 和 docx 文件,而无需在服务器上安装 MS Office
【发布时间】:2013-01-22 09:28:29
【问题描述】:

我正在开发一个项目(asp.net、c#、vb 2010、.net 4),我需要阅读我之前上传的 DOC 和 DOCX 文件(我已经完成了上传部分)。棘手的部分是我没有在服务器上安装 MS Office 并且我无法使用它。

是否有任何公共库可以包含在我的项目中而无需安装任何东西? 两个文档都非常简单:

NUMBER TAB STRING  
NUMBER TAB STRING  
NUMBER TAB STRING  
...  

我需要为每一行(段落)提取数字和字符串。

有人可以帮忙吗?我应该再次重申,我受到限制,无法在服务器上安装任何东西。

【问题讨论】:

  • 文档和文档? docx 是一个 zip 风格的 XML 文档压缩存档和可能的二进制文件(如果图像在其中等),doc 是二进制编码的 - 需要完全不同的引擎。
  • 对于 DOCX,有免费和商业图书馆,但对于 DOC,我所知道的唯一选择是商业......商业图书馆是一种选择吗?
  • @TomTom 是的,我知道 doc 和 docx 有不同的背景,但我很想知道它是否可以以某种方式合并到一个库中?或者是否有两个库我以后可以自己合并...谢谢
  • 肯定有 2 个库。并且可能是 .doc 的商业版
  • 你完全不需要商业图书馆。好吧,除非您真的无法安装任何东西,而不仅仅是无法安装大型、面向客户端的应用程序。否则,您可以使用Office IFilter,它在技术上安装了something,但第三方库不也是吗?

标签: c# docx doc


【解决方案1】:

我们现在可以使用开源的NPOI(Apache POI 的.NET 端口)库,它还支持 docx、xls 和 xlsx。 DocX 也是另一个用于创建 word 文档的开源库。

对于 DOCX,我建议Open XML API,虽然微软开发了 Open XML 来通过与此 API 通信的 XML 文件创建办公文件,但最新版本 2.5 于 2013 年发布,即 5 年以前。

【讨论】:

  • 根据您提供的 NPOI 链接,它显示“支持 xls、xlsx、docx”。 - 没有提到任何 DOC !!!
  • @Yahia 嗯...商业图书馆不会是这么好的解决方案。如果你知道一个公开的,那就太好了:) 至于 NPOI,是的,我也看到它不支持 DOC 文件:(
  • 好消息,它现在支持 2003 和 2007 文件:“POI 是一个开源项目,可以帮助您读取/写入 Office 2003/2007 文件”。是的,doc 不稳定 (npoi.codeplex.com/discussions/360441)...
【解决方案2】:

你可以使用Code7248.word_reader.dll

下面是Code7248.word_reader.dll的使用示例代码

在您的项目中添加对此 DLL 的引用并复制以下代码。

using System;
using System.Collections.Generic;
using System.Text;
//add extra namespaces
using Code7248.word_reader;


namespace testWordRead
{
    class Program
    {
        private void readFileContent(string path)
        {
            TextExtractor extractor = new TextExtractor(path);
            string text = extractor.ExtractText();
            Console.WriteLine(text);
        }
        static void Main(string[] args)
        {
            Program cs = new Program();
            string path = "D:\Test\testdoc1.docx";
            cs.readFileContent(path);
            Console.ReadLine();
        }
    }
}

【讨论】:

  • 您知道在哪里可以查看此 DLL 的许可证吗?它的许可证是否支持将 DLL 分发给其他人?
【解决方案3】:

更新:NPOI 现在支持 docx。请尝试最新版本(NPOI 2.0 beta)

【讨论】:

    【解决方案4】:

    你可以这样做:

    using System.IO;
    using System.Text;
    using Spire.Doc;
        
    namespace ReadTextLineByLine{
        class Program {
            static void Main(string[] args) {
                //Create a Document object
                Document doc = new Document();
                //Load a Word file
                doc.LoadFromFile(@"C:\Users\Administrator\Desktop\data.docx");
                //Convert the text in Word line by line into a txt file
                doc.SaveToTxt("result.text", Encoding.UTF8);
                //Read all lines of txt file
                string[] lines = File.ReadAllLines("result.text", System.Text.Encoding.Default);
            }
        }
    }
    

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多