Excel лист обрезается при попытке экспорта - PullRequest
0 голосов
/ 29 января 2020

Использование c#, npoi

В основном я использовал npoi для создания и экспорта данных в таблицу Excel, но я открыт для других способов, кроме npoi, чтобы исправить это. Данные по-прежнему экспортируются, как предполагалось, но когда я пытаюсь печатать с использованием Excel, лист выглядит следующим образом. Я хочу исправить это прямо в коде, так что пошло не так?

First page

Second page

    dataRow = (HSSFRow)sheet.CreateRow(31);
    dataRow.CreateCell(0).SetCellValue("Name");
    dataRow.GetCell(0).CellStyle = fontmaintoprightbotleft;  
    for (int i = 1; i < 14; i++)                              //this only puts the border on top of the undeclared cells
    {
        dataRow.CreateCell(i).CellStyle = fontmaintoprightbotleft;
    }
    cra = new NPOI.SS.Util.CellRangeAddress(31, 31, 0, 5);
    sheet.AddMergedRegion(cra);
    dataRow.CreateCell(6).SetCellValue("Contact No. (Hp)");
    dataRow.GetCell(6).CellStyle = fontmaintoprightbotleft;
    cra = new NPOI.SS.Util.CellRangeAddress(31, 31, 6, 8);
    sheet.AddMergedRegion(cra);
    dataRow.CreateCell(9).SetCellValue("Relationship");
    dataRow.GetCell(9).CellStyle = fontmaintoprightbotleft;
    cra = new NPOI.SS.Util.CellRangeAddress(31, 31, 9, 13);
    sheet.AddMergedRegion(cra);

    dataRow = (HSSFRow)sheet.CreateRow(32);
    dataRow.CreateCell(0).SetCellValue(EmergNametxt.Text);
    dataRow.GetCell(0).CellStyle = fontmaintoprightbotleft;            //this only puts the border on top of the undeclared cells
    for (int i = 1; i < 14; i++)
    {
        dataRow.CreateCell(i).CellStyle = fontmaintoprightbotleft;
    }
    cra = new NPOI.SS.Util.CellRangeAddress(32, 32, 0, 5);
    sheet.AddMergedRegion(cra);
    dataRow.CreateCell(6).SetCellValue(EmergContactNoTextBox.Text);
    dataRow.GetCell(6).CellStyle = fontmaintoprightbotleft;
    cra = new NPOI.SS.Util.CellRangeAddress(32, 32, 6, 8);
    sheet.AddMergedRegion(cra);
    dataRow.CreateCell(9).SetCellValue(EmergRelationshiptxt.Text);
    dataRow.GetCell(9).CellStyle = fontmaintoprightbotleft;
    cra = new NPOI.SS.Util.CellRangeAddress(32, 32, 9, 13);
    sheet.AddMergedRegion(cra);


    dataRow = (HSSFRow)sheet.CreateRow(33);
    dataRow.CreateCell(0).SetCellValue("Education Profile");
    for (int i = 1; i < 14; i++)
    {
        dataRow.CreateCell(i).CellStyle = fontheader;
    }
    dataRow.GetCell(0).CellStyle = fontheader;
    cra = new NPOI.SS.Util.CellRangeAddress(33, 33, 0, 13);
    sheet.AddMergedRegion(cra);

    dataRow = (HSSFRow)sheet.CreateRow(34);

1 Ответ

0 голосов
/ 03 февраля 2020

Документация для реализации C# NPOI, кажется, плохая, но я думаю, у вас должны быть методы POI для настроек печати

sheet.FitToPage = true;

Есть другой StackOverflow ответ , который предполагает, что вышеуказанный параметр может переопределить следующие элементы PrintSetup:

sheet.PrintSetup.FitHeight = 1;
sheet.PrintSetup.FitWidth = 1;
...