C# OpenXMLSDK-将excel分页符设置为一定数量的列
有人知道如何使用C#和OpenXMLSDK将excel分页符设置为包含一定数量的列吗?我要做的是使x列显示在一个页面上。我原本以为设置打印区域就可以了,但事实并非如此。我找不到做这件事的任何参考资料 这是在excel电子表格的“分页符视图”中手动完成的,在该视图中拖动垂直虚线以包含更多列C# OpenXMLSDK-将excel分页符设置为一定数量的列,c#,excel-2007,openxml-sdk,C#,Excel 2007,Openxml Sdk,有人知道如何使用C#和OpenXMLSDK将excel分页符设置为包含一定数量的列吗?我要做的是使x列显示在一个页面上。我原本以为设置打印区域就可以了,但事实并非如此。我找不到做这件事的任何参考资料 这是在excel电子表格的“分页符视图”中手动完成的,在该视图中拖动垂直虚线以包含更多列 谢谢OpenXMLSDK区分了手动水平分页符和手动垂直分页符 手动水平分页符允许您在给定行Id(索引)上方指定分页符 垂直分页符允许您在指定列Id(索引)的左侧指定分页符 要以编程方式插入水平分页符,请使用
谢谢OpenXMLSDK区分了手动水平分页符和手动垂直分页符
- 手动水平分页符允许您在给定行Id(索引)上方指定分页符
- 垂直分页符允许您在指定列Id(索引)的左侧指定分页符
RowBreaks
和break
类。
RowBreaks
类表示工作表中所有水平分页符的集合
分页符
和分页符
类允许插入垂直分页符。这个
分栏符
类保存工作表的所有垂直分页符
下面的示例演示如何插入垂直分页符。
函数InsertVerticalPageBreak()
获取一个列索引(应该在其中插入分页符)
还有工作表部分。此函数首先检查工作表是否已包含
分栏符
集合。如果没有,将创建一个。然后该函数创建一个实例
将Id
属性设置为列索引。我还设置了Max
属性
Excel能够处理的最大行数,以获得连续的垂直分页符。通过将属性ManualPageBreak
设置为true
我们指定了手动分页符
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++;
}
我还向示例中添加了一个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++;
}
private void InsertPageBreaks()
{
uint柱状指数=17U;
uint rowIndex=51U;
使用(SpreadsheetDocument sd=SpreadsheetDocument.Open(“c:\\temp\\spreadsheet.xlsx”,true))
{
WorkbookPart WorkbookPart=sd.WorkbookPart;
WorksheetPart WorksheetPart=workbookPart.WorksheetParts.Last();
//取消对以下行的注释以插入行分页符。
//插入横向分页符(行索引,工作表部分);
InsertColumnVerticalBreak(列索引,工作表部分);
}
}
专用void InsertHorizontalPageBreak(uint行索引、工作表部件工作表部件)
{
划船休息=
new Break(){Id=(uint32值)行索引,Max=(uint32值)16383U,ManualPageBreak=true};
RowBreaks rb=worksheetPart.Worksheet.GetFirstChild();
if(rb==null)
{
rb=新的换行符();
rb.ManualBreakCount=(UINT32值)0;
rb.Count=(uint32值)0;
工作表部分工作表追加(rb);
}
rb.Append(行中断);
rb.ManualBreakCount++;
rb.Count++;
}
专用void InsertVerticalPageBreak(uint列索引,工作表部件工作表部件)
{
ColumnBreaks cb=worksheetPart.Worksheet.GetFirstChild();
如果(cb==null)
{
cb=新列中断();
cb.ManualBreakCount=(UINT32值)0;
cb.Count=(uint32值)0;
工作表部分工作表追加(cb);
}
中断br=
new Break(){Id=(uint32值)columnIndex,Max=(uint32值)1048575U,ManualPageBreak=true};
cb.追加(br);
cb.ManualBreakCount++;
cb.Count++;
}