8
votes

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?

2

2 Answers

23
votes

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 */ );
-1
votes

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.