【问题标题】:OpenXML Sdk VML Set CheckBox CheckedOpenXML Sdk VML 设置 CheckBox 已选中
【发布时间】:2011-03-03 10:13:07
【问题描述】:
ControlPropertiesPart c2 = util.getCheckBoxByLabel(worksheetPart, "ENV"); 
c2.FormControlProperties.Checked = DocumentFormat.OpenXml.Office2010.Excel.CheckedValues.Checked; 
worksheetPart.Worksheet.Save(); 

我必须在电子表格文档的 vmlDrawing 中选中一个复选框。

代码与 Office 2010 完美搭配,但使用 Office 2007 打开文档时,未选中复选框。

怎么做?

【问题讨论】:

  • 根据我在文档中阅读的内容,ControlPropertiesPart 仅针对 Office 2010 定义,因此 2007 将忽略它。您能否发布 util.getCheckBoxByLabel 的内容,我目前正在努力解决类似的问题。

标签: c# .net excel openxml


【解决方案1】:

根据我在文档中阅读的内容,ControlPropertiesPart 仅针对 Office 2010 定义,因此 2007 将忽略它。

您可以手动编辑(文本编辑,不使用 OpenXML API 文件 vmlDrawingPart1.xml

你可以发现文档中的复选框是这种形式的:

<x:ClientData ObjectType="Checkbox">
   <x:SizeWithCells/>
   <x:Anchor>
    6, 38, 17, 15, 8, 89, 18, 12</x:Anchor>
   <x:AutoFill>False</x:AutoFill>
   <x:AutoLine>False</x:AutoLine>
   <x:TextVAlign>Center</x:TextVAlign>

   <x:NoThreeD/>
  </x:ClientData>

如果你想检查它们,只需添加

<x:Checked>1</x:Checked>

作为 x:ClientData 的子标签

我是这样用 c# 做的:

VmlDrawingPart vmlDrawingPart1 = part.GetPartById("rId8") as VmlDrawingPart;
GenerateVmlDrawingPart1Content(vmlDrawingPart1);


private void GenerateVmlDrawingPart1Content(VmlDrawingPart vmlDrawingPart1)
{
        System.Xml.XmlTextWriter writer = new System.Xml.XmlTextWriter(vmlDrawingPart1.GetStream(System.IO.FileMode.OpenOrCreate), System.Text.Encoding.UTF8);
        writer.WriteRaw(vml2007);
        writer.Flush();
        writer.Close();
}

【讨论】:

    猜你喜欢
    • 2016-10-06
    • 1970-01-01
    • 2020-11-16
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多