打开XML SDK页边距

时间:2011-12-08 11:37:35

标签: c# excel openxml-sdk margins

我正在尝试在由open xml sdk生成的excel电子表格上设置页边距。我没有打开已经存在的excel文档,它是从头开始生成的。我正在使用PageMargins类,但不知道如何将此实例附加到工作表。 SDK生产力工具提供了以下代码:

PageMargins pageMargins1 = worksheet.GetFirstChild<PageMargins>();
pageMargins1.Left = 0.45D;
pageMargins1.Right = 0.45D;
pageMargins1.Top = 0.5D;
pageMargins1.Bottom = 0.5D;

GetFirstChild()函数返回null。我也试过

worksheet.Append(pageMargins1);

但没有运气。

同样使用此示例中的代码:How change excel 2007 document orientation to landscape by OpenXML sdk 如果从头开始创建文档,设置页面方向不起作用。你如何添加一个PageSetup&amp; PageMargin实例到文档?

任何人都知道这个SDK并知道如何使用边距或页面设置类?

1 个答案:

答案 0 :(得分:1)

事物附加到工作表的顺序很重要。 PageMargins需要在PageSetup之前附加,并且它们都需要在SheetData之后结束。此外,需要设置所有设置。我用了这段代码:

PageMargins pageMargins1 = new PageMargins();
pageMargins1.Left = 0.45D;
pageMargins1.Right = 0.45D;
pageMargins1.Top = 0.5D;
pageMargins1.Bottom = 0.5D;
pageMargins1.Header = 0.3D;
pageMargins1.Footer = 0.3D;
worksheetPart.Worksheet.AppendChild(pageMargins1);

PageSetup pageSetup = new PageSetup();
pageSetup.Orientation = OrientationValues.Landscape;
pageSetup.FitToHeight = 2;
pageSetup.HorizontalDpi = 200;
pageSetup.VerticalDpi = 200;
worksheetPart.Worksheet.AppendChild(pageSetup);

与sdk生产力工具一起使用的一个巧妙的技巧是将.xlsx文件重命名为.zip,然后提取内容。然后打开/xl/worksheets/sheet.xml并将标记与excel创建的excel文件的标记进行比较。