package egovframework.util.excel; import org.apache.poi.ss.usermodel.*; import java.io.IOException; import java.io.OutputStream; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.format.DateTimeFormatter; public interface ExcelFile { // (1) void write(OutputStream stream) throws IOException; void writeWithEncryption(OutputStream stream, String password) throws IOException; default void createCell(Row row, int column, T value, CellStyle style) { if (value == null) { return; // avoid NPE } Cell cell = row.createCell(column); if (value instanceof Integer) { cell.setCellValue((Integer)value); } else if (value instanceof Long) { cell.setCellValue((Long)value); } else if (value instanceof Double) { cell.setCellValue((Double)value); } else if (value instanceof Float) { cell.setCellValue((Float)value); } else if (value instanceof Boolean) { cell.setCellValue((Boolean)value); } else if (value instanceof LocalDateTime) { LocalDateTime dateTime = (LocalDateTime)value; cell.setCellValue(dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); } else if (value instanceof LocalDate) { LocalDate date = (LocalDate)value; cell.setCellValue(date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); } else if (value instanceof LocalTime) { LocalTime time = (LocalTime)value; cell.setCellValue(time.format(DateTimeFormatter.ofPattern("HH:mm:ss"))); } else { cell.setCellValue(value.toString()); } cell.setCellStyle(style); } default CellStyle createCellStyle(Workbook wb, boolean isBold) { CellStyle style = wb.createCellStyle(); Font font = wb.createFont(); font.setBold(isBold); style.setFont(font); return style; } }