2012-06-19 89 views
2

下面是我面臨的兩個問題,這兩個問題是應該解決的兩個問題,以使我的項目能夠正常工作。如何閱讀「.doc」文件或如何使用ASP.NET將其轉換爲「.docx」

所以這裏有那些:

  1. 如何閱讀名爲 「.doc」 文件,不使用Word自動化或任何付費SDK喜歡使用Aspose.Words

    (如果第一個是不可能的,那麼)

  2. 如何轉換名爲 「.doc」 文件 「.DOCX」? 而不使用Word自動化或任何付費的SDK,如Aspose.Words

搜索了很多,我發現只有.docx的開源解決方案。

這是要在服務器上完成的,所以沒有Word安裝在那裏。

+0

參考線 - http://stackoverflow.com/questions/1803576/convert-word-doc-file-to-docx-on-a-server -without-word – adatapost

+0

進一步引用線程 - http://stackoverflow.com/questions/2405417/automation-how-to-automate-transforming-doc-to-docx – Holf

回答

2

看看NPOI - 它是用.NET編寫的,是免費且開源的。 roadmap打算支持將來創建新格式,但現在您可以使用它來讀取舊格式並使用其他解決方案來編寫新格式,這是一個開放標準(請參閱the MS spec here)。

+0

在這個階段,這個庫仍然不支持讀取.doc文件供生產使用。 – Sam

1

有一個微軟批量轉換工具這樣做。我發現了一個reference here.

否則我覺得你別無選擇,只能使用Word自動化。畢竟,即使OpenOffice也無法打開一些.doc文件並將其轉換爲.docx/OpenXML,這意味着自己編寫任何類型的解析工具都會很麻煩。

+0

這需要在服務器上安裝** Microsoft Office Compatibility Pack **,所以這不是正確的。 –

+1

兩點:在原文中指定了「無字」。我認爲MS Office兼容包可以獨立安裝。其次,您可能使用的實用程序(例如'C:\ Program Files \ Microsoft Office \ Office12 \ wordconv.exe' - 選項-nme ')可能會自行工作,或者只有很少的依賴關係。可能值得一試。 – Holf

+0

我同意了,但我不確定這是因爲它不是我自己的服務器,我將從託管服務提供商處獲取空間,因此這可能會導致某些主機出現問題。 –

1

你可能想給這個純.NET解決方案中一個鏡頭:

b2xtranslator

它不要求你在服務器上安裝任何Office應用程序。

+0

你可以添加一個使用樣本嗎? – zed

+0

@zed我已經[升級到.NET Core](https://github.com/EvolutionJobs/b2xtranslator),一個例子是'b2xtranslator.WordprocessingMLMapping.Converter.Convert(new WordDocument(StructuredStorageReader(fileName)), WordprocessingDocument.Create(fileName +「x」,DocumentType.Document))' – Keith

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; 




     } 
    } 
} 

它會爲你也工作..

+0

是否需要document.Convert()行?它給我的問題,我會認爲.SaveAs()也將處理轉換爲fileformat參數。 – codemonkeyliketab