c # NPOI Excel установить номер страницы - PullRequest
0 голосов
/ 15 февраля 2019

Можно ли установить номер страницы для моего документа 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 голосов
/ 15 февраля 2019

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

...