2010-09-12 97 views
5

我有大量需要解析的Word文檔。由於它們都是從同一個模板創建的,我認爲最好的方法是將它們保存爲HTML文件並解析HTML本身。通過Office API將多個Word文檔保存爲HTML

儘管將單個Word文檔保存爲HTML非常容易,但我還沒有找到從Word內部執行批量過程的方法。因此,我試圖找到一種方法來利用Microsoft Office/Word API來實現這一點。

如何使用Word API將許多Word文檔保存爲HTML?

在此先感謝。

更新:一些更多的細節......

有些文件是擴展.doc的,有的則是.docx。我希望這不是問題,但如果是這樣,我只需要將它們全部轉換爲.docx,希望可以使用API​​或使用DocX

說到DOCX,我saw on the author's blog,它可以在一.docx文件保存爲HTML與下面的代碼:

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

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      // Convert Input.docx into Output.doc 
      Convert(@"C:\users\cathal\Desktop\Input.docx", @"c:\users\cathal\Desktop\Output.doc", WdSaveFormat.wdFormatDocument); 

      /* 
      * Convert Input.docx into Output.pdf 
      * Please note: You must have the Microsoft Office 2007 Add-in: Microsoft Save as PDF or XPS installed 
      * http://www.microsoft.com/downloads/details.aspx?FamilyId=4D951911-3E7E-4AE6-B059-A2E79ED87041&displaylang=en 
      */ 
      Convert(@"c:\users\cathal\Desktop\Input.docx", @"c:\users\cathal\Desktop\Output.pdf", WdSaveFormat.wdFormatPDF); 

      // Convert Input.docx into Output.html 
      Convert(@"c:\users\cathal\Desktop\Input.docx", @"c:\users\cathal\Desktop\Output.html", WdSaveFormat.wdFormatHTML); 
     } 

     // Convert a Word 2008 .docx to Word 2003 .doc 
     public static void Convert(string input, string output, WdSaveFormat format) 
     { 
      // Create an instance of Word.exe 
      Word._Application oWord = new Word.Application(); 

      // Make this instance of word invisible (Can still see it in the taskmgr). 
      oWord.Visible = false; 

      // Interop requires objects. 
      object oMissing = System.Reflection.Missing.Value; 
      object isVisible = true; 
      object readOnly = false; 
      object oInput = input; 
      object oOutput = output; 
      object oFormat = format; 

      // Load a document into our instance of word.exe 
      Word._Document oDoc = oWord.Documents.Open(ref oInput, ref oMissing, ref readOnly, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref isVisible, ref oMissing, ref oMissing, ref oMissing, ref oMissing); 

      // Make this document the active document. 
      oDoc.Activate(); 

      // Save this document in Word 2003 format. 
      oDoc.SaveAs(ref oOutput, ref oFormat, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing); 

      // Always close Word.exe. 
      oWord.Quit(ref oMissing, ref oMissing, ref oMissing); 
     } 
    } 
} 

這是做的最好的方法是什麼?

回答

4

您上面張貼的代碼應該爲您完成這項工作。也據我所知Document.SaveAs Api可以轉換任何文件(docx,doc,rtf)它可以打開到word(或任何其他格式)

還代替爲每個文件創建一個word應用程序實例將名稱的字符串[]傳遞給convert api,並且只有在完成保存後才處理文檔實例

+0

同意,這是做到這一點的方法,Vinay關於僅創建單個實例的觀點是現成的。 – 2010-09-12 19:19:45