【问题标题】:Open XML SDK page margins打开 XML SDK 页边距
【发布时间】:2011-12-08 11:37:34
【问题描述】:

我正在尝试在由 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 和 PageMargin 实例添加到文档中?

有没有人了解这个 SDK 并知道如何使用边距或页面设置类?

【问题讨论】:

    标签: c# excel openxml-sdk margins


    【解决方案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 文件的标记进行比较。

    【讨论】:

    • PageMargins 和 PageSetup 的值是否需要转换? (我收到错误无法将类型“double”隐式转换为“DocumentFormat.OpenXml.UInt32Value”)也在 Visula Studio 2010 中我只有“PageMargin”而不是“PageMargins”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-08
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多