1

我正在使用Open XML SDK 2.0 在 C# 中编写代码。我在Word 文档中定义了一些控件,例如 TextBox、Select Option 等。我想以编程方式读取它们的数据(示例如下)。

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);
}

但它显示控件的名称而不是它们的值。

我如何获得价值?

4

2 回答 2

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 更容易处理。

于 2012-09-05T08:59:47.700 回答
0

您必须使用 ctrl.Id 来获取关系 id 而不是 ctrl.Name。您需要此关系 ID 才能访问存储在其他地方的控件内容。

之后,您可以调用 MainDocumentPart.GetPartById(ctrl.Id) 并获取控制数据。在使用任何东西之前,请记住您必须将其转换为正确的类型。

于 2012-09-26T17:13:33.253 回答