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 输出整洁!

相关推荐
taller_200011 小时前
【012】数据类型入门: Excel 数据到 Python 值的转换
python·excel·pie·py
IT规划师15 小时前
Redis 数据类型全解 - List:用对是队列用错是灾难(二)
redis·消息队列·.net
1-1=015 小时前
.NET Core 编译技术
.net·.netcore
云月呀17 小时前
《死亡回忆录》藏汉双语版电子版 PDF,穆迪博士 150 例濒死体验访谈,一部关于生死的温柔读本
pdf·死亡回忆录
xiaolinudao1231 天前
给pdf文件盖骑缝章的软件有哪些
pdf
hu55667981 天前
如何使用Adobe Acrobat Pro DC将1页PDF切割为2页,A3变A4打印。
pdf
ComPDFKit2 天前
PDF转Word后,每行都成一段?先分清断段、文本框和扫描页
pdf·word
1-1=02 天前
.NET Core 文件系统
.net·.netcore·1024程序员节
Nymph_Zhu2 天前
pdf转换markdown预览及内容互相点击定位
前端·pdf·vue3·markdown·element-plus