package com.iailab.module.data.common.utils; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.ss.usermodel.HorizontalAlignment; import org.apache.poi.ss.usermodel.VerticalAlignment; import org.apache.poi.ss.util.CellRangeAddress; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.OutputStream; import java.lang.reflect.Field; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; /** * Excel 导出通用工具类 * * @author PanZhibao * @date 2021å¹´06月29æ—¥ 9:06 */ public class ExcelUtil { /** * 导出PointValueExcel * * @param sheetTitle * @param title * @param list * @param response * @return */ public static byte[] exportPointValue(String sheetTitle, String[] title, List<Object> list, HttpServletResponse response) { HSSFWorkbook wb = new HSSFWorkbook();//创建excel表 HSSFSheet sheet = wb.createSheet(sheetTitle); sheet.setDefaultColumnWidth(20);//设置默认行宽 //è¡¨å¤´æ ·å¼ï¼ˆåŠ 粗,水平居ä¸ï¼Œåž‚ç›´å±…ä¸ï¼‰ HSSFCellStyle cellStyle = wb.createCellStyle(); cellStyle.setAlignment(HorizontalAlignment.CENTER);//æ°´å¹³å±…ä¸ cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//åž‚ç›´å±…ä¸ HSSFFont fontStyle = wb.createFont(); cellStyle.setFont(fontStyle); //æ ‡é¢˜æ ·å¼ï¼ˆåŠ 粗,垂直居ä¸ï¼‰ HSSFCellStyle cellStyle2 = wb.createCellStyle(); cellStyle2.setVerticalAlignment(VerticalAlignment.CENTER);//åž‚ç›´å±…ä¸ cellStyle2.setFont(fontStyle); //å—æ®µæ ·å¼ï¼ˆåž‚ç›´å±…ä¸ï¼‰ HSSFCellStyle cellStyle3 = wb.createCellStyle(); cellStyle3.setVerticalAlignment(VerticalAlignment.CENTER);//åž‚ç›´å±…ä¸ //æ•°å—æ ·å¼ HSSFCellStyle cellStyle4 = wb.createCellStyle(); HSSFDataFormat df = wb.createDataFormat(); // æ¤å¤„设置数æ®æ ¼å¼ cellStyle4.setVerticalAlignment(VerticalAlignment.CENTER);//åž‚ç›´å±…ä¸ cellStyle4.setDataFormat(df.getFormat("#,##0.000000"));//è®¾ç½®æ•°å€¼ç±»åž‹æ ¼å¼ä¸ºä¿ç•™ä¸¤ä½å°æ•° //创建表头 HSSFRow row = sheet.createRow(0); //row.setHeightInPoints(20);//行高 HSSFCell cell = row.createCell(0); cell.setCellValue(sheetTitle); cell.setCellStyle(cellStyle); sheet.addMergedRegion(new CellRangeAddress(0,0,0,(title.length-1))); //åˆ›å»ºæ ‡é¢˜ HSSFRow rowTitle = sheet.createRow(1); //rowTitle.setHeightInPoints(20); HSSFCell hc; for (int i = 0; i < title.length; i++) { hc = rowTitle.createCell(i); hc.setCellValue(title[i]); hc.setCellStyle(cellStyle2); } byte result[] = null; try { //åˆ›å»ºè¡¨æ ¼æ•°æ® Field[] fields; int i = 2; for (Object obj : list) { fields = obj.getClass().getDeclaredFields(); HSSFRow rowBody = sheet.createRow(i); //rowBody.setHeightInPoints(20); int j = 0; for (Field f : fields) { f.setAccessible(true); Object va = f.get(obj); if (null == va) { va = ""; } hc = rowBody.createCell(j); if (j == 0) { hc.setCellValue(Double.parseDouble(va.toString())); hc.setCellStyle(cellStyle4); } else { hc.setCellValue(va.toString()); hc.setCellStyle(cellStyle3); } j++; } i++; } //设置Httpå“应头告诉æµè§ˆå™¨ä¸‹è½½è¿™ä¸ªé™„件 response.setHeader("Content-Disposition", "attachment;Filename=" + System.currentTimeMillis() + ".xls"); OutputStream outputStream = response.getOutputStream(); wb.write(outputStream); outputStream.close(); return wb.getBytes(); } catch (Exception ex) { Logger.getLogger(ExcelUtil.class.getName()).log(Level.SEVERE, null, ex); return result; } finally{ try { wb.close(); } catch (IOException ex) { Logger.getLogger(ExcelUtil.class.getName()).log(Level.SEVERE, null, ex); } } } }