OpenXML SDK - 将excel分页符设置为一定数量的列

时间:2012-07-08 07:22:12

标签: c# excel-2007 openxml-sdk

有没有人知道如何设置excel分页符以使用C#和OpenXML SDK包含一定数量的列?我想要做的是让x列出现在一个页面上。我原本以为设置打印区域会这样做,但事实并非如此。我找不到任何参考来做这件事。

这是在excel电子表格的“分页符视图”中手动完成的,您可以在其中拖动垂直虚线以包含更多列。

由于

1 个答案:

答案 0 :(得分:2)

OpenXML SDK区分手动水平分页符和手动垂直分页符。

  • 手动水平分页符允许您指定高于给定行Id(索引)的分数。
  • 垂直分页符允许您指定指定列Id(索引)左侧的分隔符。

要以编程方式插入水平分页符,请使用RowBreaksBreak类。 RowBreaks类表示工作表中所有水平分页符的集合。

ColumnBreaksBreak类允许您插入垂直分页符。该 ColumnBreaks类包含工作表的所有垂直分页符。

以下示例演示了垂直分页符的插入。 函数InsertVerticalPageBreak()采用columnIndex(应该插入分页符) 和WorksheetPart。此函数首先检查工作表是否已包含 ColumnBreaks集合。如果没有,将创建一个。然后该函数创建一个实例 Break类的Id属性,并将Max属性设置为列索引。我还设置了ManualPageBreak属性 到Excel能够处理的最大行数,以获得持续的垂直分页符。通过将属性true设置为InsertHorizontalPageBreak(),我们指定了手动分页符。

我还在示例中添加了private void InsertPageBreaks() { uint columnIndex = 17U; uint rowIndex = 51U; using (SpreadsheetDocument sd = SpreadsheetDocument.Open("c:\\temp\\spreadsheet.xlsx", true)) { WorkbookPart workbookPart = sd.WorkbookPart; WorksheetPart worksheetPart = workbookPart.WorksheetParts.Last(); // Uncomment the following line to insert row page breaks. // InsertHorizontalPageBreak(rowIndex, worksheetPart); InsertColumnVerticalBreak(columnIndex, worksheetPart); } } private void InsertHorizontalPageBreak(uint rowIndex, WorksheetPart worksheetPart) { Break rowBreak = new Break() { Id = (UInt32Value)rowIndex, Max = (UInt32Value)16383U, ManualPageBreak = true }; RowBreaks rb = worksheetPart.Worksheet.GetFirstChild<RowBreaks>(); if (rb == null) { rb = new RowBreaks(); rb.ManualBreakCount = (UInt32Value)0; rb.Count = (UInt32Value)0; worksheetPart.Worksheet.Append(rb); } rb.Append(rowBreak); rb.ManualBreakCount++; rb.Count++; } private void InsertVerticalPageBreak(uint columnIndex, WorksheetPart worksheetPart) { ColumnBreaks cb = worksheetPart.Worksheet.GetFirstChild<ColumnBreaks>(); if (cb == null) { cb = new ColumnBreaks(); cb.ManualBreakCount = (UInt32Value)0; cb.Count = (UInt32Value)0; worksheetPart.Worksheet.Append(cb); } Break br = new Break() { Id = (UInt32Value)columnIndex, Max = (UInt32Value)1048575U, ManualPageBreak = true }; cb.Append(br); cb.ManualBreakCount++; cb.Count++; } 函数来说明如何使用 添加一个水平分页符。

{{1}}