}
workbook.write(outputStream);
}
private void handleSheet(final XSSFWorkbook workbook, final Sheet sheet) {
XSSFSheet s = workbook.createSheet(sheet.getName());
s.setDisplayGridlines(sheet.isDisplayGridLines());
s.setPrintGridlines(sheet.isPrintGridLines());
s.setFitToPage(sheet.isFitToPage());
s.setHorizontallyCenter(sheet.isHorizontallyCenter());
s.setAutobreaks(true);
// Print Config
XSSFPrintSetup printSetup = s.getPrintSetup();
printSetup.setLandscape(sheet.isLandscape());
printSetup.setFitHeight((short) 1);
printSetup.setFitWidth((short) 1);
// Rows
int rowNum = 0;
for (Row row : sheet.getRows()) {
this.handleRow(workbook, s, row, rowNum++);
}
// Widths
for (Entry<Integer, Integer> entry : sheet.getColumnsWith().entrySet()) {
int column = entry.getKey().intValue();
int value = entry.getValue().intValue();
s.setColumnWidth(column, 256 * value);
}
// Merge
for (CellMerge<?, ?> cellMerge : sheet.getMerges()) {
IntegerCellMerge integerCellMerge = (IntegerCellMerge) cellMerge;
int firstRow = integerCellMerge.getFirstRow().intValue();
int lastRow = integerCellMerge.getLastRow().intValue();
int firstColumn = integerCellMerge.getFirstColumn().intValue();
int lastColumn = integerCellMerge.getLastColumn().intValue();
CellRangeAddress address = new CellRangeAddress(firstRow, lastRow, firstColumn, lastColumn);
s.addMergedRegion(address);
}
// Images
for (Image image : sheet.getImages()) {
byte[] bytes = image.getBytes();
ImageType imageType = image.getType();
int type = -1;
switch (imageType) {
case JPEG:
type = Workbook.PICTURE_TYPE_JPEG;
break;
case PNG:
type = Workbook.PICTURE_TYPE_PNG;
break;
default:
break;
}
if (type == -1) {
throw new DocumentException("Unsupported image type " + imageType);
}
short row = (short) image.getRow();
short column = (short) image.getColumn();
//int width = Math.abs(image.getWidth());
//int height = Math.abs(image.getHeight());
int index = workbook.addPicture(bytes, type);
XSSFClientAnchor anchor = new XSSFClientAnchor(0, 0, 0, 0, row, column, row, column);
XSSFDrawing drawing = s.createDrawingPatriarch();
XSSFPicture picture = drawing.createPicture(anchor, index);
picture.resize();
// if ((width != 0) && (height != 0)) {