OpenXML Sdk VML Set CheckBox Checked

ControlPropertiesPart c2 = util.getCheckBoxByLabel(worksheetPart, "ENV"); c2.FormControlProperties.Checked = DocumentFormat.OpenXml.Office2010.Excel.CheckedValues.Checked; worksheetPart.Worksheet.Save(); 

我必须在电子表格文档中检查vmlDrawing中的checkbox。

该代码是完美的Office 2010,但使用Office 2007时,我打开文档checkbox没有选中。

怎么做?

谢谢

从我在文档中读取的ControlPropertiesPart只是为Office 2010定义的,因此2007将忽略它。

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

你可以在这个表格中find文档中的checkbox:

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