package net.rrm.ehour.ui.common.report.excel;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.WorkbookUtil;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.IOException;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
public class ExcelWorkbook {
private static final String FONT_NAME = "Arial";
private Map<ExcelStyle, CellStyle> pregeneratedStyles;
private Workbook workbook;
public ExcelWorkbook() {
init();
}
private void init() {
workbook = new XSSFWorkbook();
pregenerateStyles(workbook);
}
private void pregenerateStyles(Workbook workbook) {
pregeneratedStyles = new HashMap<>();
ExcelStyle[] styles = ExcelStyle.values();
Font font = workbook.createFont();
font.setFontName(FONT_NAME);
for (ExcelStyle style : styles) {
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setFont(font);
style.apply(workbook, cellStyle, font);
pregeneratedStyles.put(style, cellStyle);
}
}
public CellStyle getCellStyle(ExcelStyle forExcelStyle) {
return pregeneratedStyles.get(forExcelStyle);
}
public Sheet createSheet(String sheetName) {
return workbook.createSheet(WorkbookUtil.createSafeSheetName(sheetName));
}
public int addPicture(byte[] image, int imageType) {
return workbook.addPicture(image, imageType);
}
public void write(OutputStream output) throws IOException {
workbook.write(output);
}
public CreationHelper getCreationHelper() {
return workbook.getCreationHelper();
}
public Workbook getWorkbook() {
return workbook;
}
}