2012-09-04 89 views
1

我正在使用C#編寫代碼,使用Open XML SDK 2.0。我在Word文檔像文本框,選擇選項等。我想以編程方式讀取其數據(如下示例)..如何從Word中的控件讀取數據文檔usng打開XML

WordprocessingDocument InputWordDocument = WordprocessingDocument.Open(@"C:\Users\jayant\Desktop\Template.docx", false); 
foreach (Control ctrl in InputWordDocument.MainDocumentPart.Document.Body.Descendants<Control>()) 
{ 
    Console.WriteLine(ctrl.Name.Value); 
} 

定義了一些控制,但它顯示的控件不是他們的價值的名義。

如何獲取值?

回答

2

您必須使用DocumentFormat.OpenXml.Wordprocessing.Control類而不是System.Windows.Forms.Control類! 改變之後,你必須通過孩子節點。

WordprocessingDocument InputWordDocument = WordprocessingDocument.Open(@"C:\Users\jayant\Desktop\Template.docx", false); 
foreach (DocumentFormat.OpenXml.Wordprocessing.Control ctrl in InputWordDocument.MainDocumentPart.Document.Body.Descendants<Control>()) 
{ 
    ... 
} 

提示:使用XmlNode更容易處理。

+0

我試過了。它不給任何值 –

+0

我的不好,嘗試ctrl.Text。 –

+0

沒有什麼作品..實際上,我已經比較了兩個使用Open XML Productivity工具的docx文件,例如一個文件具有無數據控制和其他控制數據..但在對比期間沒有找到數據:( –

0

您必須使用ctrl.Id來獲取關係id而不是ctrl.Name。您需要此關係ID才能訪問存儲在別處的控制內容。

之後,您可以調用MainDocumentPart.GetPartById(ctrl.Id)並獲取控件數據。在使用任何東西之前,請記住,您必須將其轉換爲正確的類型。

+0

謝謝我一定會試試這個 –