C# 实现 Excel 页面自定义设置 (页面布局、打印优化)
页面设置的核心对象PageSetup在 Free Spire.XLS 中几乎所有页面设置相关的功能都通过PageSetup类来实现。PageSetup对象封装了 Excel 工作表的打印与显示配置涵盖页边距、纸张大小、方向、缩放比、页眉页脚、打印区域等多个方面。Excel 页面设置核心流程如下创建Workbook对象代表 Excel 工作簿。使用LoadFromFile()方法加载目标 Excel 文件。通过Workbook.Worksheets[index]获取指定工作表。访问工作表的PageSetup属性即可获得页面设置对象。获取后即可通过其丰富的属性进行各项配置所有代码层面的修改最终通过SaveToFile()保存生效。常用 Excel 页面设置C# 代码示例页边距设置页边距控制着打印内容与纸张边缘之间的空白区域。PageSetup类提供了六个与页边距相关的属性属性说明单位TopMargin上边距英寸BottomMargin下边距英寸LeftMargin左边距英寸RightMargin右边距英寸HeaderMarginInch页眉边距英寸FooterMarginInch页脚边距英寸using Spire.Xls; namespace PageMarginExample { internal class Program { static void Main(string[] args) { // 创建Workbook对象并加载Excel文件 Workbook workbook new Workbook(); workbook.LoadFromFile(示例.xlsx); // 获取第一个工作表 Worksheet sheet workbook.Worksheets[0]; // 获取PageSetup对象 PageSetup pageSetup sheet.PageSetup; // 设置页边距单位英寸1英寸 ≈ 2.54厘米 pageSetup.TopMargin 1.0; // 上边距1英寸 pageSetup.BottomMargin 1.0; // 下边距1英寸 pageSetup.LeftMargin 0.75; // 左边距0.75英寸 pageSetup.RightMargin 0.75; // 右边距0.75英寸 pageSetup.HeaderMarginInch 0.5; // 页眉边距0.5英寸 pageSetup.FooterMarginInch 0.5; // 页脚边距0.5英寸 // 保存修改后的文件 workbook.SaveToFile(设置页边距.xlsx, ExcelVersion.Version2016); workbook.Dispose(); } } }需要注意的是该库习惯使用英寸作为边距单位。如果需要使用厘米可通过单位换算1英寸 2.54厘米获取对应的英寸值。纸张方向设置纸张方向决定了内容的排版布局方式。纵向Portrait适合行数多、列数少的数据横向Landscape则更适合宽表或多列数据。// 获取PageSetup对象后代码同上 PageSetup pageSetup sheet.PageSetup; // 设置为纵向 pageSetup.Orientation PageOrientationType.Portrait; // 或设置为横向 // pageSetup.Orientation PageOrientationType.Landscape;当处理包含多个工作表且需要为不同工作表设置不同打印方向的场景时务必注意一个关键配置需要将Workbook.ConverterSetting.PrintWithSheetPageSetting属性设为true否则打印时多个工作表可能会统一使用同一个方向。纸张大小设置PaperSize属性用于指定打印纸张的规格。// 设置为A4纸张 pageSetup.PaperSize PaperSizeType.PaperA4;常见纸张类型包括A4、A3、A5、Letter、Legal等开发者可根据实际需求选择合适的纸张枚举值。页面缩放与适应页面页面缩放控制着工作表内容在打印时的尺寸比例。Free Spire.XLS提供了两种缩放控制方式方式一固定缩放比例Zoom通过Zoom属性直接设置缩放百分比10 - 400之间的整数// 设置为75%比例打印 pageSetup.Zoom 75;方式二自动适应页宽/页高FitToPagesFitToPagesWide和FitToPagesTall属性用于将工作表内容缩放到指定的页面数量范围内// 所有列缩放到1页宽度行数不限自动分页 pageSetup.FitToPagesWide 1; pageSetup.FitToPagesTall 0; // 或将整个内容缩放到1页宽 × 1页高所有内容挤在一页 // pageSetup.FitToPagesWide 1; // pageSetup.FitToPagesTall 1;FitToPagesWide 0时表示按实际宽度缩放不自动调节FitToPagesTall 0时表示按实际高度缩放不限制行数。注意Zoom属性与FitToPagesWide/FitToPagesTall属性互斥。当设置FitToPagesWide等属性时Zoom参数将自动失效反之亦然。打印区域与打印标题指定打印区域当工作表数据量较大或只需要输出部分内容时可以通过PrintArea属性指定仅打印特定范围的单元格// 仅打印A1到F50区域的单元格 pageSetup.PrintArea A1:F50;PrintArea属性使用Excel标准的范围表示法如A1:C20。设置打印标题行和列在多页打印场景下让标题行或标题列在每一页重复出现可以大大提升报表的可读性。PrintTitleRows和PrintTitleColumns属性用于实现这一需求// 设置第1行和第2行为重复行标题在每一页顶部重复显示 pageSetup.PrintTitleRows $1:$2; // 设置第A列重复在每一页左侧重复显示 // pageSetup.PrintTitleColumns $A:$A; // 指定打印区域的同时保留打印标题的设置 pageSetup.PrintArea A1:F100; pageSetup.PrintTitleRows $1:$2;分页符控制分页符用于手动控制Excel打印时的分页点。Free Spire.XLS支持在指定单元格位置插入横向分页符和纵向分页符。插入横向分页符横向分页符在指定单元格的左上方位置分页// 在第20行位置插入横向分页符在第20行上方分页 sheet.HPageBreaks.Add(sheet.Range[A20]); // 再在第35行位置插入一个横向分页符 sheet.HPageBreaks.Add(sheet.Range[A35]);插入纵向分页符纵向分页符在指定单元格的左侧位置分页// 在第E列左侧插入纵向分页符 sheet.VPageBreaks.Add(sheet.Range[E1]);插入分页符后Excel 在打印时会按照设定的分页点进行分页精确控制内容的页面分布。