C#NPOI Excel设置页码

时间:2019-02-15 07:29:26

标签: c# apache-poi npoi

是否可以为我的Excel文档设置页码?我已经在一定数量的行之后设置了分页符,所以我想知道是否可以执行某些操作?

此外,是否有可能获得分页符的总数?

for (int j = 0; j < Input.Count; j++)
{
    IRow row = sheet.CreateRow(j + 2);
    if (internalCounter == limit)
    {
        sheet.SetRowBreak(j+1);
        internalCounter = 0;
    }
    ICell cellZero = row.CreateCell(0);
    ICell cellOne = row.CreateCell(1);
    ICell cellTwo = row.CreateCell(2);
    ICell cellThree = row.CreateCell(3);
    ICell cellFour = row.CreateCell(4);
    ICell cellFive = row.CreateCell(5);
    cellZero.CellStyle = contentStyle;
    cellOne.CellStyle = contentStyle;
    cellTwo.CellStyle = contentStyle;
    cellThree.CellStyle = contentStyle;
    cellFour.CellStyle = contentStyle;
    cellFive.CellStyle = contentStyle;

    cellZero.SetCellValue(cH.CreateRichTextString((internalCounter+1).ToString()));
    cellOne.SetCellValue(cH.CreateRichTextString(Input[j].BranchCode.ToString()));
    cellTwo.SetCellValue(cH.CreateRichTextString(Input[j].PolicyNo.ToString()));
    cellThree.SetCellValue(cH.CreateRichTextString(Input[j].Employer.ToString()));
    cellFour.SetCellValue(cH.CreateRichTextString(Input[j].Name.ToString()));
    cellFive.SetCellValue(cH.CreateRichTextString(Input[j].SerialNo.ToString()));

    internalCounter++;
}

1 个答案:

答案 0 :(得分:0)

1:您可以创建带有页码的页面标题:

var header = sheet.Header;    
header.Center = $"Page {HeaderFooter.Page}";

2:您可以在此标题中包括总页数:

var header = sheet.Header;
header.Center = $"Page {HeaderFooter.Page} of {HeaderFooter.NumPages}";

3:如果要在代码中使用分页符总数,请添加以下内容:

var totalPageBreaks = 0;
for (int j = 0; j <  < Input.Count; j++)
{
    IRow row = sheet.CreateRow(j + 2);
    if (internalCounter == limit)
    {
        totalPageBreaks++;
        sheet.SetRowBreak(j + 1);
        internalCounter = 0;
    }

4:NPOI默认设置为适合所有一页。添加它以获得分页符:

sheet.FitToPage = false;

5:这是一个演示Windows控制台的应用程序,显示了上述所有要点:

using System;
using System.IO;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;

class Program
{
    static void Main(string[] args)
    {
        var wb = new HSSFWorkbook();
        var sheet = wb.CreateSheet("Sheet1");
        sheet.FitToPage = false;

        const int limit = 30;
        var internalCounter = 0;
        var totalPageBreaks = 0;
        for (int j = 0; j < 100; j++)
        {
            IRow row = sheet.CreateRow(j + 2);
            if (internalCounter == limit)
            {
                totalPageBreaks++;
                sheet.SetRowBreak(j + 1);
                internalCounter = 0;
            }

            ICell cellZero = row.CreateCell(0);
            ICell cellOne = row.CreateCell(1);

            cellZero.SetCellValue($"Counter {internalCounter + 1}");
            cellOne.SetCellValue($"BranchCode {j + 1}");
            internalCounter++;
        }

        var header = sheet.Header;
        header.Center = $"Page {HeaderFooter.Page} of {HeaderFooter.NumPages}";

        using (var file = new FileStream(@"C:\temp\Test1.xls", FileMode.Create))
        {
            wb.Write(file);
        }

        Console.WriteLine("Worksheet created. Press any key");
        Console.ReadLine();
    }
}

结果:

NPOI excel demo result