Spire.XLS for .NET 中, 将 Excel 转换为 PDF 时, 如何设置纸张大小为A4纸,并将excel内容分页放置?

Spire.XLS for .NET 中,将 Excel 转换为 PDF 时,若需设置纸张大小为 A4 并确保内容正确分页,可按以下步骤配置:


完整代码示例

csharp 复制代码
using Spire.Xls;
using Spire.Xls.Core;

class Program
{
    static void Main(string[] args)
    {
        // 1. 加载Excel文件
        Workbook workbook = new Workbook();
        workbook.LoadFromFile("input.xlsx");

        // 2. 获取工作表
        Worksheet sheet = workbook.Worksheets[0];

        // 3. 设置页面为A4
        sheet.PageSetup.PaperSize = PaperSizeType.A4;

        // 4. 设置页面方向(根据内容选择横向或纵向)
        sheet.PageSetup.Orientation = PageOrientationType.Portrait; // 纵向
        // sheet.PageSetup.Orientation = PageOrientationType.Landscape; // 横向(适合列数多的情况)

        // 5. 控制分页方式(关键步骤)
        // 方式1:按内容自动分页(推荐)
        sheet.PageSetup.FitToPagesWide = 1;  // 所有列缩放到1页宽度
        sheet.PageSetup.FitToPagesTall = 0;  // 行数不限,自动分页

        // 方式2:强制每页固定行数(可选)
        // sheet.HPageBreaks.Add(sheet.Range["A20"]); // 在第20行插入分页符

        // 6. 自动调整列宽/行高(避免内容被压缩)
        sheet.AllocatedRange.AutoFitColumns();
        sheet.AllocatedRange.AutoFitRows();

        // 7. 保存为PDF
        workbook.SaveToFile("output.pdf", FileFormat.PDF);
    }
}

关键配置说明

1. 设置A4纸张
csharp 复制代码
sheet.PageSetup.PaperSize = PaperSizeType.A4;
2. 控制分页方式
  • 方法1:自动分页(推荐)

    所有列缩放到1页宽度,行数自动分页:

    csharp 复制代码
    sheet.PageSetup.FitToPagesWide = 1;  // 1页宽度
    sheet.PageSetup.FitToPagesTall = 0;  // 高度不限(自动分页)
  • 方法2:手动分页

    在指定位置插入分页符:

    csharp 复制代码
    sheet.HPageBreaks.Add(sheet.Range["A20"]); // 在第20行分页
3. 调整页面方向
  • 纵向(默认) :适合行数多、列数少的数据。

    csharp 复制代码
    sheet.PageSetup.Orientation = PageOrientationType.Portrait;
  • 横向 :适合列数多的情况(如宽表)。

    csharp 复制代码
    sheet.PageSetup.Orientation = PageOrientationType.Landscape;
4. 优化内容显示
  • 自动调整列宽/行高 :避免内容被压缩或截断。

    csharp 复制代码
    sheet.AllocatedRange.AutoFitColumns();
    sheet.AllocatedRange.AutoFitRows();

常见问题解决

Q1: 内容仍挤在一页?
  • 检查是否设置了 FitToPagesTall = 0(允许自动分页)。
  • 确保未设置 Zoom 属性(与 FitToPages 冲突)。
Q2: 分页后部分内容被截断?
  • 使用 AutoFitColumns()AutoFitRows() 自动调整。
  • 检查是否有合并单元格,尝试取消合并。
Q3: 页边距过大导致内容少?

调整页边距:

csharp 复制代码
sheet.PageSetup.TopMargin = 0.5;    // 单位:英寸
sheet.PageSetup.BottomMargin = 0.5;
sheet.PageSetup.LeftMargin = 0.5;
sheet.PageSetup.RightMargin = 0.5;

效果对比

配置 输出效果
FitToPagesWide=1, FitToPagesTall=0 所有列缩放到1页宽度,行数自动分页
FitToPagesWide=1, FitToPagesTall=1 强制缩放到1页(可能内容过小)
HPageBreaks.Add 手动控制分页位置

按需选择合适的分页方式即可确保 A4 PDF 输出整洁

相关推荐
.NET修仙日记2 小时前
C# 记录类型(record)全面解析:从概念到最佳实践
c#·.net·.net core·record·学习指南
2501_930707783 小时前
使用C#代码在 PDF 中创建目录
pdf
唐青枫5 小时前
C#.NET ControllerBase 深入解析:Web API 控制器的核心基石
c#·.net
Highcharts.js11 小时前
入门指南|从文件到图表:Highcharts对接数据库(CSV、Excel)实现数据同步绘制图表
数据库·excel·数据同步·highcharts·数据对接·文件导入
gCode Teacher 格码致知13 小时前
Excel教学基础-Count函数的使用方法-由Deepseek产生
excel·count函数
随便叫个啥呢15 小时前
java使用poi-tl模版+vform自定义表单生成word,使用LibreOffice导出为pdf
java·pdf·word
数据的世界0118 小时前
编程语言排行榜2025年11月
c#·.net
長安只在旧夢中18 小时前
如何在Excel实现类似SQL的Where查找功能
excel·excel技巧·excel实现where
一抓掉一大把1 天前
秒杀-Masstransit配置
rabbitmq·.net