如何读取“.doc”文件或如何使用ASP.NET将其转换为“.docx”

时间:2012-06-19 12:01:28

标签: c# asp.net ms-word .doc

以下是我面临的两个问题,应该解决这两个问题,以使我的项目有效。

所以这些是:

  1. 如何阅读“.doc”文件,不使用Word自动化或任何付费SDK,如Aspose.Words

    (如果第一个不可能那么)

  2. 如何将“.doc”文件转换为“.docx”? 不使用Word自动化或任何付费SDK,如Aspose.Words
  3. 搜索了很多,我发现只有.docx的开源解决方案。

    这是在服务器上完成的,所以没有安装Word。

5 个答案:

答案 0 :(得分:2)

看一下NPOI - 它是用.NET编写的,是免费的开源软件。 roadmap打算将来支持创建新格式,但是现在你可以使用它来读取旧格式并使用其他解决方案来编写新格式,这是一个开放标准(参见the MS spec here })。

答案 1 :(得分:1)

如果您想要开源,可以使用OpenXML SDK。或者使用Interop.Word API在.NET中有一个选项。您可以使用此api打开文件并将其另存为docx。

http://msdn.microsoft.com/de-de/library/microsoft.office.interop.word(v=office.11).aspx

但这需要在机器上安装。

答案 2 :(得分:1)

有一个Microsoft批量转换工具可以做到这一点。我找到了reference here.

否则我认为您别无选择,只能使用Word Automation。毕竟,即使是OpenOffice也无法打开一些.doc文件并将它们转换为.docx / OpenXML,这意味着自己编写任何类型的解析工具都会很麻烦。

答案 3 :(得分:1)

您可能希望为此纯.NET解决方案提供一个镜头:

  

b2xtranslator

它不需要您在服务器上安装任何Office应用程序。

答案 4 :(得分:1)

我也面临同样的问题。如果要将.doc转换为.docx,可以使用Microsoft.Office.Interop.Word库。这个对我有用。这是代码。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using Word = Microsoft.Office.Interop.Word;
    using System.Reflection;
    using System.IO;


namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {

            Word._Application application = new Word.Application();
            object fileformat = Word.WdSaveFormat.wdFormatXMLDocument;
            DirectoryInfo directory = new DirectoryInfo(@"D:\abc");
            foreach (FileInfo file in directory.GetFiles("*.doc", SearchOption.AllDirectories))
            {
                if (file.Extension.ToLower() == ".doc")
                {
                    object filename = file.FullName;
                    object newfilename = file.FullName.ToLower().Replace(".doc", ".docx");
                    Word._Document document = application.Documents.Open(filename);

                    document.Convert();
                    document.SaveAs(newfilename, fileformat);
                    document.Close();
                    document = null;
                }
            }
            application.Quit();
            application = null;




        }
    }
}

它也适合你..