package com.dbnt.faisp.util; import java.io.IOException; import java.io.PrintWriter; import java.time.format.DateTimeFormatter; import java.util.Date; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletResponse; import org.apache.poi.ss.usermodel.BorderStyle; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.FillPatternType; import org.apache.poi.ss.usermodel.HorizontalAlignment; import org.apache.poi.ss.usermodel.IndexedColors; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.xssf.usermodel.XSSFDataFormat; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import com.dbnt.faisp.equip.model.CellPhone; import com.dbnt.faisp.fipTarget.model.PartInfo; import com.dbnt.faisp.fipTarget.model.PartWork; public class Utils { public static boolean isEmpty(final Object obj) { return !isNotEmpty(obj); } public static boolean isNotEmpty(final Object obj) { if(null == obj) return false; else { if(obj instanceof String) return "".equals(obj) ? false : true; else if(obj instanceof List) return !((List)obj).isEmpty(); else if(obj instanceof Map) return !((Map)obj).isEmpty(); // else if(obj instanceof Object[]) return 0 == Array.getLength(obj) ? false : true; else if(obj instanceof Integer) return !(null == obj); else if(obj instanceof Long) return !(null == obj); else return false; } } public static String getTimeStampString(final String format) { return getTimeStampString(new Date(), format); } public static String getTimeStampString(final Date date) { return getTimeStampString(date, "yyyyMMddHHmmss"); } public static String getTimeStampString(final Date date, final String format){ java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat (format, java.util.Locale.KOREA); return formatter.format(date); } public static String getTimeStampString(String date, final String format) { try { if(null == date || "".equals(date)) return ""; Date d = null; date= date.replaceAll("-", ""); switch(date.length()) { case 14: break; case 12: date += "00"; break; case 10: date += "0000"; break; case 8: date += "000000"; break; case 6: date += "01000000"; break; case 4: date += "0101000000"; break; default: return ""; } java.text.SimpleDateFormat tmpFormat = new java.text.SimpleDateFormat("yyyyMMddHHmmss", java.util.Locale.KOREA); if("".equals(date)) d = new Date(); else { tmpFormat.setLenient(true); d = tmpFormat.parse(date); } return getTimeStampString(d, format); } catch(Exception e) { e.printStackTrace(); return ""; } } public static String getFileExtention(final String filename) { if(null == filename || "".equals(filename)) return ""; return -1 < filename.lastIndexOf(".") ? filename.substring(filename.lastIndexOf(".") + 1).toLowerCase() : ""; } public static String generationSaveName() { try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } return Utils.getTimeStampString("yyyyMMdd_HHmmss_SSS"); } public static void listToExcel(List list, HttpServletResponse response, String[] headers, String[] headerNames, String[] columnType, String sheetName, String excelFileName) throws IOException { if(Utils.isNotEmpty(list)) { // 메모리에 100개의 행을 유지합니다. 행의 수가 넘으면 디스크에 적습니다. XSSFWorkbook wb = new XSSFWorkbook(); Sheet sheet = wb.createSheet(sheetName); Row headerRow = sheet.createRow(0); CellStyle cellStyle1 = wb.createCellStyle(); //쉼표들어간 숫자 양식 CellStyle cellStyle2 = wb.createCellStyle(); //숫자양식 CellStyle headerStyle = wb.createCellStyle(); //숫자양식 XSSFDataFormat format = wb.createDataFormat(); cellStyle1.setDataFormat(format.getFormat("#,##0")); cellStyle2.setDataFormat(format.getFormat("#")); headerStyle.setAlignment(HorizontalAlignment.CENTER); headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); headerStyle.setFillForegroundColor((short)3); headerStyle.setFillForegroundColor(IndexedColors.LIME.getIndex()); for(int i=0; i"); out.write(""); out.write(""); out.write(""); out.write(""); out.write(""); out.flush(); out.close(); } } public static void downExcel(List list, HttpServletResponse response, String[] headers, String[] headerNames,String[] headerNames2, String[] columnType, String sheetName, String excelFileName) throws IOException { if(Utils.isNotEmpty(list)) { // 메모리에 100개의 행을 유지합니다. 행의 수가 넘으면 디스크에 적습니다. XSSFWorkbook wb = new XSSFWorkbook(); Sheet sheet = wb.createSheet(sheetName); Row headerRow = sheet.createRow(0); Row headerRow2 = sheet.createRow(1); CellStyle cellStyle1 = wb.createCellStyle(); //쉼표들어간 숫자 양식 CellStyle cellStyle2 = wb.createCellStyle(); //숫자양식 CellStyle headerStyle = wb.createCellStyle(); //숫자양식 CellStyle headerStyle2 = wb.createCellStyle(); XSSFDataFormat format = wb.createDataFormat(); cellStyle1.setDataFormat(format.getFormat("#,##0")); cellStyle2.setDataFormat(format.getFormat("#,##0")); cellStyle2.setAlignment(HorizontalAlignment.CENTER); headerStyle2.setAlignment(HorizontalAlignment.CENTER); headerStyle.setAlignment(HorizontalAlignment.CENTER); headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); headerStyle.setFillForegroundColor((short)3); headerStyle.setFillForegroundColor(IndexedColors.LIME.getIndex()); //로우그리기 for(int i=0; i"); out.write(""); out.write(""); out.write(""); out.write(""); out.write(""); out.flush(); out.close(); } } public static void downEquipStatusExcel(List list, HttpServletResponse response, String[] headers, String[] headerNames,String[] headerNames2, String[] columnType, String sheetName, String excelFileName) throws IOException { if(Utils.isNotEmpty(list)) { // 메모리에 100개의 행을 유지합니다. 행의 수가 넘으면 디스크에 적습니다. XSSFWorkbook wb = new XSSFWorkbook(); Sheet sheet = wb.createSheet(sheetName); Row headerRow = sheet.createRow(0); Row headerRow2 = sheet.createRow(1); CellStyle cellStyle1 = wb.createCellStyle(); //쉼표들어간 숫자 양식 CellStyle cellStyle2 = wb.createCellStyle(); //숫자양식 CellStyle headerStyle = wb.createCellStyle(); //숫자양식 CellStyle headerStyle2 = wb.createCellStyle(); CellStyle headerStyle3 = wb.createCellStyle(); XSSFDataFormat format = wb.createDataFormat(); cellStyle1.setDataFormat(format.getFormat("#,##0")); cellStyle2.setDataFormat(format.getFormat("#,##0")); cellStyle2.setAlignment(HorizontalAlignment.CENTER); headerStyle2.setBorderTop(BorderStyle.THIN); headerStyle2.setBorderBottom(BorderStyle.THIN); headerStyle2.setBorderLeft(BorderStyle.THIN); headerStyle2.setBorderRight(BorderStyle.THIN); headerStyle2.setAlignment(HorizontalAlignment.CENTER); headerStyle2.setFillPattern(FillPatternType.SOLID_FOREGROUND); headerStyle2.setFillForegroundColor((short)3); headerStyle2.setFillForegroundColor(IndexedColors.LIME.getIndex()); headerStyle.setAlignment(HorizontalAlignment.CENTER); headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); headerStyle.setFillForegroundColor((short)3); headerStyle.setFillForegroundColor(IndexedColors.LIME.getIndex()); headerStyle3.setBorderTop(BorderStyle.THIN); headerStyle3.setBorderBottom(BorderStyle.THIN); headerStyle3.setBorderLeft(BorderStyle.THIN); headerStyle3.setBorderRight(BorderStyle.THIN); headerStyle3.setAlignment(HorizontalAlignment.CENTER); headerStyle3.setFillPattern(FillPatternType.SOLID_FOREGROUND); headerStyle3.setFillForegroundColor((short)3); headerStyle3.setFillForegroundColor(IndexedColors.LIME.getIndex()); //로우그리기 for(int i=0; i"); out.write(""); out.write(""); out.write(""); out.write(""); out.write(""); out.flush(); out.close(); } } public static void partInfolistToExcel(List partInfoList, HttpServletResponse response, String[] headers, String[] headerNames,String[] headerNames2,String[] headerNames3, String[] columnType, String sheetName, String excelFileName) throws IOException { if(Utils.isNotEmpty(partInfoList)) { // 메모리에 100개의 행을 유지합니다. 행의 수가 넘으면 디스크에 적습니다. XSSFWorkbook wb = new XSSFWorkbook(); Sheet sheet = wb.createSheet(sheetName); Row headerRow = sheet.createRow(0); Row headerRow2 = sheet.createRow(1); Row headerRow3 = sheet.createRow(2); CellStyle cellStyle1 = wb.createCellStyle(); //쉼표들어간 숫자 양식 CellStyle cellStyle2 = wb.createCellStyle(); //숫자양식 CellStyle headerStyle = wb.createCellStyle(); //숫자양식 CellStyle headerStyle2 = wb.createCellStyle(); CellStyle headerStyle3 = wb.createCellStyle(); XSSFDataFormat format = wb.createDataFormat(); cellStyle1.setAlignment(HorizontalAlignment.CENTER); cellStyle2.setDataFormat(format.getFormat("#,##0")); cellStyle2.setAlignment(HorizontalAlignment.CENTER); headerStyle2.setBorderTop(BorderStyle.THIN); headerStyle2.setBorderBottom(BorderStyle.THIN); headerStyle2.setBorderLeft(BorderStyle.THIN); headerStyle2.setBorderRight(BorderStyle.THIN); headerStyle2.setAlignment(HorizontalAlignment.CENTER); headerStyle2.setFillPattern(FillPatternType.SOLID_FOREGROUND); headerStyle2.setFillForegroundColor((short)3); headerStyle2.setFillForegroundColor(IndexedColors.LIME.getIndex()); headerStyle.setAlignment(HorizontalAlignment.CENTER); headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); headerStyle.setFillForegroundColor((short)3); headerStyle.setFillForegroundColor(IndexedColors.LIME.getIndex()); headerStyle3.setBorderTop(BorderStyle.THIN); headerStyle3.setBorderBottom(BorderStyle.THIN); headerStyle3.setBorderLeft(BorderStyle.THIN); headerStyle3.setBorderRight(BorderStyle.THIN); headerStyle3.setAlignment(HorizontalAlignment.CENTER); headerStyle3.setFillPattern(FillPatternType.SOLID_FOREGROUND); headerStyle3.setFillForegroundColor((short)3); headerStyle3.setFillForegroundColor(IndexedColors.LIME.getIndex()); //로우그리기 for(int i=0; i"); out.write(""); out.write(""); out.write(""); out.write(""); out.write(""); out.flush(); out.close(); } } public static void partWorkListToExcel(List partWorkList, HttpServletResponse response, String[] headers, String[] headerNames, String[] headerNames2, String[] columnType, String sheetName, String excelFileName) throws IOException { if(Utils.isNotEmpty(partWorkList)) { // 메모리에 100개의 행을 유지합니다. 행의 수가 넘으면 디스크에 적습니다. XSSFWorkbook wb = new XSSFWorkbook(); Sheet sheet = wb.createSheet(sheetName); Row headerRow = sheet.createRow(0); Row headerRow2 = sheet.createRow(1); CellStyle cellStyle1 = wb.createCellStyle(); //쉼표들어간 숫자 양식 CellStyle cellStyle2 = wb.createCellStyle(); //숫자양식 CellStyle headerStyle = wb.createCellStyle(); //숫자양식 CellStyle headerStyle2 = wb.createCellStyle(); CellStyle headerStyle3 = wb.createCellStyle(); XSSFDataFormat format = wb.createDataFormat(); cellStyle1.setAlignment(HorizontalAlignment.CENTER); cellStyle2.setDataFormat(format.getFormat("#,##0")); cellStyle2.setAlignment(HorizontalAlignment.CENTER); headerStyle2.setBorderTop(BorderStyle.THIN); headerStyle2.setBorderBottom(BorderStyle.THIN); headerStyle2.setBorderLeft(BorderStyle.THIN); headerStyle2.setBorderRight(BorderStyle.THIN); headerStyle2.setAlignment(HorizontalAlignment.CENTER); headerStyle2.setFillPattern(FillPatternType.SOLID_FOREGROUND); headerStyle2.setFillForegroundColor((short)3); headerStyle2.setFillForegroundColor(IndexedColors.LIME.getIndex()); headerStyle.setAlignment(HorizontalAlignment.CENTER); headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); headerStyle.setFillForegroundColor((short)3); headerStyle.setFillForegroundColor(IndexedColors.LIME.getIndex()); headerStyle3.setBorderTop(BorderStyle.THIN); headerStyle3.setBorderBottom(BorderStyle.THIN); headerStyle3.setBorderLeft(BorderStyle.THIN); headerStyle3.setBorderRight(BorderStyle.THIN); headerStyle3.setAlignment(HorizontalAlignment.CENTER); headerStyle3.setFillPattern(FillPatternType.SOLID_FOREGROUND); headerStyle3.setFillForegroundColor((short)3); headerStyle3.setFillForegroundColor(IndexedColors.LIME.getIndex()); //로우그리기 for(int i=0; i 0) { rowData.set("file_cnt", "●"); }else { rowData.set("file_cnt", ""); } rowData.set("wrt_dt", partWorkList.get(i).getWrtDt().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"))); for(int j=0; j"); out.write(""); out.write(""); out.write(""); out.write(""); out.write(""); out.flush(); out.close(); } } public static void cellPhoneListToExcel(List cellPhoneList, HttpServletResponse response, String[] headers, String[] headerNames, String[] columnType, String sheetName, String excelFileName) throws IOException { if(Utils.isNotEmpty(cellPhoneList)) { // 메모리에 100개의 행을 유지합니다. 행의 수가 넘으면 디스크에 적습니다. XSSFWorkbook wb = new XSSFWorkbook(); Sheet sheet = wb.createSheet(sheetName); Row headerRow = sheet.createRow(0); CellStyle cellStyle1 = wb.createCellStyle(); //쉼표들어간 숫자 양식 CellStyle cellStyle2 = wb.createCellStyle(); //숫자양식 CellStyle headerStyle = wb.createCellStyle(); //숫자양식 CellStyle headerStyle2 = wb.createCellStyle(); CellStyle headerStyle3 = wb.createCellStyle(); XSSFDataFormat format = wb.createDataFormat(); cellStyle1.setAlignment(HorizontalAlignment.CENTER); cellStyle2.setDataFormat(format.getFormat("#,##0")); cellStyle2.setAlignment(HorizontalAlignment.CENTER); headerStyle2.setBorderTop(BorderStyle.THIN); headerStyle2.setBorderBottom(BorderStyle.THIN); headerStyle2.setBorderLeft(BorderStyle.THIN); headerStyle2.setBorderRight(BorderStyle.THIN); headerStyle2.setAlignment(HorizontalAlignment.CENTER); headerStyle2.setFillPattern(FillPatternType.SOLID_FOREGROUND); headerStyle2.setFillForegroundColor((short)3); headerStyle2.setFillForegroundColor(IndexedColors.LIME.getIndex()); headerStyle.setAlignment(HorizontalAlignment.CENTER); headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); headerStyle.setFillForegroundColor((short)3); headerStyle.setFillForegroundColor(IndexedColors.LIME.getIndex()); headerStyle3.setBorderTop(BorderStyle.THIN); headerStyle3.setBorderBottom(BorderStyle.THIN); headerStyle3.setBorderLeft(BorderStyle.THIN); headerStyle3.setBorderRight(BorderStyle.THIN); headerStyle3.setAlignment(HorizontalAlignment.CENTER); headerStyle3.setFillPattern(FillPatternType.SOLID_FOREGROUND); headerStyle3.setFillForegroundColor((short)3); headerStyle3.setFillForegroundColor(IndexedColors.LIME.getIndex()); //로우그리기 for(int i=0; i"); out.write(""); out.write(""); out.write(""); out.write(""); out.write(""); out.flush(); out.close(); } } }