Home » excel » java – Apache POI – setting left/right print margin in Excel

java – Apache POI – setting left/right print margin in Excel

Posted by: admin March 9, 2020 Leave a comment

Questions:

Is that possible – with apache POI – to set left or right print margin for Excel sheet?

The default margins are quite big. I cannot see neither setLeftMargin nor setRightMargin in XSSFPrintSetup, but only header and footer:

    XSSFPrintSetup printSetup = (XSSFPrintSetup) sheet.getPrintSetup();
    printSetup.setHeaderMargin(0.5D);
    printSetup.setFooterMargin(0.5D);

Is there any kind friend that could help me a little?

How to&Answers:

The sheet margins are not contained in the XSSFPrintSetup object, but on the XSSFSheet itself. Use Sheet‘s getMargin and setMargin methods, passing the appropriate Sheet constant for the top/left/bottom/right/header/footer margins. Set and get the margin in inches.

double leftMarginInches = sheet.getMargin(Sheet.LeftMargin);
sheet.setMargin(Sheet.RightMargin, 0.5 /* inches */ );

Answer:

The enumeration is now MarginType.LeftMargin, -RightMargin

double leftMargin = sheet.GetMargin(MarginType.LeftMargin);
double rightMargin = sheet.GetMargin(MarginType.RightMargin);

Update:

The code preceding this code is:

            var workbook = new XSSFWorkbook();
            var sheet = workbook.CreateSheet(sheetname);
            double leftMargin = sheet.GetMargin(MarginType.LeftMargin);
            double rightMargin = sheet.GetMargin(MarginType.RightMargin);

This is indeed the NPOI.