使用C#将.doc转换为.docx

本文关键字:docx 转换 doc 使用 | 更新日期: 2023-09-27 18:25:44

我使用PDFFocus.net dll将PDF文件转换为word文件。但对于我的系统,我想要.docx文件。我尝试了不同的方法。有一些图书馆可用。但这些并不是免费的。这是我的pdf到doc转换代码。

    Using System;
    Using System.Collections.Generic;
    Using System.Linq;
    Using System.Text;
    Using System.Threading.Tasks;
    Using iTextSharp.text;
    Using iTextSharp.text.pdf;
    namespace ConsoleApplication
    {
          class Program
          {
               static void main(String[] args)
               {
                    SautinSoft.PdfFocus f=new SautinSoft.PdfFocus();
                    f.OpenPdf(@"E:'input.pdf");
                         t.ToWord(@"E:'input.doc");
                }
          }
    }

这项工作成功。然后我尝试用下面的代码将.doc转换为.docx。但它给了我错误。

//Open a Document.
Document doc=new Document("input.doc");
//Save Document.
doc.save("output.docx");

有人能帮我吗。

使用C#将.doc转换为.docx

是的,就像Erop说的那样。您可以使用Microsoft Word 14.0 Object Library。然后,从doc转换为docx真的很容易。例如,具有以下功能:

    public void ConvertDocToDocx(string path)
    {
        Application word = new Application();
        if (path.ToLower().EndsWith(".doc"))
        {
            var sourceFile = new FileInfo(path);
            var document = word.Documents.Open(sourceFile.FullName);
            string newFileName = sourceFile.FullName.Replace(".doc", ".docx");
            document.SaveAs2(newFileName,WdSaveFormat.wdFormatXMLDocument, 
                             CompatibilityMode: WdCompatibilityMode.wdWord2010);
            word.ActiveDocument.Close();
            word.Quit();
            File.Delete(path);
        }
    }

请确保添加CompatibilityMode: WdCompatibilityMode.wdWord2010,否则文件将保持兼容模式。还要确保在要运行应用程序的计算机上安装了Microsoft Office。

另一件事,我不知道PDFFocus.net,但你有没有尝试过直接从pdf转换为docx。像这样:

     static void main(String[] args)
     {
           SautinSoft.PdfFocus f=new SautinSoft.PdfFocus();
           f.OpenPdf(@"E:'input.pdf");
                t.ToWord(@"E:'input.docx");
     }

我认为这是可行的,但这只是一个假设。

尝试使用Microsoft.Office.Interop.Word程序集。

MSDN文章可以在这里找到

在您的项目中包括引用,并通过上面显示的链接中的示例在代码模块中使用它们

using System.Collections.Generic;
using Word = Microsoft.Office.Interop.Word;