OpenXML Sdk VML Set CheckBox Проверено - PullRequest
1 голос
/ 03 марта 2011
ControlPropertiesPart c2 = util.getCheckBoxByLabel(worksheetPart, "ENV"); 
c2.FormControlProperties.Checked = DocumentFormat.OpenXml.Office2010.Excel.CheckedValues.Checked; 
worksheetPart.Worksheet.Save(); 

Где я должен установить флажок внутри vmlDrawing в моем документе электронной таблицы.

Код отлично подходит для Office 2010, но при использовании Office 2007 при открытии документа флажок не установлен.

Как это сделать?

1 Ответ

0 голосов
/ 29 апреля 2013

Из того, что я прочитал в документации, 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();
}
...