2011-12-31 109 views

回答

3

這裏是一個F#代碼片段,可能會爲您提供一個快速入門。它成功地提取Word2010中創建.docx文件的所有文本內容的拼接線的字符串:

open System 
open System.IO 
open System.IO.Packaging 
open System.Xml 

let getDocxContent (path: string) = 
    use package = Package.Open(path, FileMode.Open) 
    let stream = package.GetPart(new Uri("/word/document.xml", UriKind.Relative)).GetStream() 
    stream.Seek(0L, SeekOrigin.Begin) |> ignore 
    let xmlDoc = new XmlDocument() 
    xmlDoc.Load(stream) 
    xmlDoc.DocumentElement.InnerText 

printfn "%s" (getDocxContent @"..\..\test.docx") 

爲了使它的工作,不要忘記在你的VS項目中引用WindowsBase.dll

+1

大拇指爲優雅的解決方案。現在可以切換到XDocument。 Framework 1.1將於9歲關閉,而Linq的XDom顯然更具功能性。 – 2012-01-02 20:55:24

1

嘗試使用Microsoft的OpenXML SDK

在鏈接頁面上還有可用於反編譯Office 2007文件的Microsoft工具。即使對於簡單的文檔,反編譯的代碼也可能相當冗長,儘管如此被警告。 OpenXML SDK有一個很大的學習曲線。我發現它很難使用。

1

System.IO.File.ReadAllText的類型爲string -> string

因爲.docx文件是一個二進制文件,所以字符串中的某些字符可能有鈴符。請查看Word automationPackagingOpenXML API

+0

感謝您的回覆。我在這裏找到了docX http://docx.codeplex.com/。但我不知道如何在F#中使用它。如果你能爲我提供一些代碼,這將是非常有用的。新年快樂:-)有一個偉大的一年 – Exception 2011-12-31 19:37:22

+0

更不用說默認情況下沒有壓縮docx文件。 – 2012-01-02 20:56:50

相關問題