gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 17:11:30 25 4
gpt4 key购买 nike

有谁知道如何使用 C# 和 OpenXML SDK 设置 excel 分页符以包含一定数量的列?我想要做的是让 x 列出现在一页上。我原本以为设置打印区域就可以了,但事实并非如此。我找不到任何引用来执行此操作。

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

谢谢

最佳答案

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

  • 手动水平分页符允许您在给定行 ID(索引)上方指定分页符。
  • 垂直分页符允许您在指定列 ID(索引)的左侧指定一个分页符。

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

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

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

我还在示例中添加了一个 InsertHorizo​​ntalPageBreak() 函数来展示如何添加水平分页符。

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++;
}

关于c# - OpenXML SDK - 将excel分页符设置为一定数量的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11381398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com