| 
					
				 | 
			
			
				@@ -0,0 +1,271 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+package com.pm.common.utils.poi; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.poi.hssf.usermodel.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.poi.ss.usermodel.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.poi.ss.usermodel.Font; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.poi.ss.util.CellRangeAddress; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.poi.xssf.usermodel.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.servlet.ServletOutputStream; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import javax.servlet.http.HttpServletResponse; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.lang.reflect.Field; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.text.SimpleDateFormat; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Date; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Map; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.logging.Level; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.logging.Logger; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class ExcelUtilPageData { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * 导出excel 但是office打开文件会出现 Excel无法打开文件"xx.xlsx",因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配。 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     *  所以导出的文件需要时 xls 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param exportCondition 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param manName 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param sheetTitle 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param title 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     * @param list 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public static void exportXLS(HttpServletResponse response, String exportCondition, String manName, String sheetTitle, String[] title, List list) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HSSFWorkbook wb = new HSSFWorkbook(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HSSFSheet sheet = wb.createSheet(sheetTitle); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 表头样式(加粗,水平居中,垂直居中) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HSSFCellStyle cellStyle = wb.createCellStyle(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cellStyle.setAlignment(HorizontalAlignment.CENTER); // 水平居中 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cellStyle.setVerticalAlignment(VerticalAlignment.CENTER); // 垂直居中 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HSSFFont fontStyle = wb.createFont(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fontStyle.setBold(true); // 替换setBoldweight 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fontStyle.setFontName("宋体"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cellStyle.setFont(fontStyle); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HSSFFont font = wb.createFont(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        font.setFontName("宋体"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        font.setFontHeightInPoints((short) 12); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 标题样式(加粗,垂直居中) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HSSFCellStyle cellStyle2 = wb.createCellStyle(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cellStyle2.setVerticalAlignment(VerticalAlignment.CENTER); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cellStyle2.setAlignment(HorizontalAlignment.CENTER); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cellStyle2.setFont(fontStyle); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 设置边框样式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cellStyle2.setBorderBottom(BorderStyle.THIN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cellStyle2.setBorderLeft(BorderStyle.THIN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cellStyle2.setBorderTop(BorderStyle.THIN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cellStyle2.setBorderRight(BorderStyle.THIN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 字段样式(垂直居中) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HSSFCellStyle cellStyle3 = wb.createCellStyle(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cellStyle3.setVerticalAlignment(VerticalAlignment.CENTER); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 设置边框样式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cellStyle3.setBorderBottom(BorderStyle.THIN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cellStyle3.setBorderLeft(BorderStyle.THIN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cellStyle3.setBorderTop(BorderStyle.THIN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        cellStyle3.setBorderRight(BorderStyle.THIN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 创建标题 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HSSFRow rowTitle = sheet.createRow(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        rowTitle.setHeightInPoints(20); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        HSSFCell hc; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (int i = 0; i < title.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            hc = rowTitle.createCell(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String titleStr = title[i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            int commaIndex = titleStr.lastIndexOf(","); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String displayValue = commaIndex >= 0 ? titleStr.substring(0, commaIndex) : titleStr; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            hc.setCellValue(displayValue); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            hc.setCellStyle(cellStyle2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            int i = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (Object obj : list) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                HSSFRow rowBody = sheet.createRow(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                rowBody.setHeightInPoints(20); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (int j = 0; j < title.length; j++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    String titleStr = title[j]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    String fieldName = titleStr.substring(titleStr.lastIndexOf(",") + 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Object va = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (obj instanceof Map) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        va = ((Map) obj).get(fieldName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        Field f = obj.getClass().getDeclaredField(fieldName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (f != null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            f.setAccessible(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            va = f.get(obj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (null == va) va = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (va instanceof Date) va = sdf.format(va); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    hc = rowBody.createCell(j); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    hc.setCellValue(va.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    hc.setCellStyle(cellStyle3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                i++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 自动调整列宽 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (int k = 0; k < title.length; k++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                sheet.autoSizeColumn(k); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 设置打印区域 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            wb.setPrintArea(0, 0, title.length - 1, 0, i - 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 设置输出 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String fileName = (sheetTitle == null ? "导出" : sheetTitle) + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date()) + ".xlsx"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            response.reset(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            response.setHeader("Content-Disposition", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    "attachment;filename=" + new String(fileName.getBytes("GBK"), "ISO-8859-1")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ServletOutputStream out = response.getOutputStream(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            wb.write(out); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            out.flush(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            out.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } catch (Exception ex) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Logger.getLogger(ExcelUtilPageData.class.getName()).log(Level.SEVERE, null, ex); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public static void exportXLSX(HttpServletResponse response, String exportCondition, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                              String manName, String sheetTitle, String[] title, List list) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 创建XSSFWorkbook代替HSSFWorkbook 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        XSSFWorkbook wb = new XSSFWorkbook(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        XSSFSheet sheet = wb.createSheet(sheetTitle); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 创建样式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        XSSFCellStyle headerStyle = wb.createCellStyle(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        headerStyle.setAlignment(HorizontalAlignment.CENTER); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        headerStyle.setVerticalAlignment(VerticalAlignment.CENTER); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        XSSFFont headerFont = wb.createFont(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        headerFont.setBold(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        headerFont.setFontName("宋体"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        headerStyle.setFont(headerFont); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 标题样式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        XSSFCellStyle titleStyle = wb.createCellStyle(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        titleStyle.setAlignment(HorizontalAlignment.CENTER); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        titleStyle.setVerticalAlignment(VerticalAlignment.CENTER); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        titleStyle.setFont(headerFont); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 设置边框 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        titleStyle.setBorderBottom(BorderStyle.THIN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        titleStyle.setBorderLeft(BorderStyle.THIN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        titleStyle.setBorderTop(BorderStyle.THIN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        titleStyle.setBorderRight(BorderStyle.THIN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 内容样式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        XSSFCellStyle contentStyle = wb.createCellStyle(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        contentStyle.setVerticalAlignment(VerticalAlignment.CENTER); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        contentStyle.setBorderBottom(BorderStyle.THIN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        contentStyle.setBorderLeft(BorderStyle.THIN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        contentStyle.setBorderTop(BorderStyle.THIN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        contentStyle.setBorderRight(BorderStyle.THIN); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 内容字体颜色为黑色 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        XSSFFont blackFont = wb.createFont(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        blackFont.setColor(new XSSFColor(java.awt.Color.BLACK, new DefaultIndexedColorMap())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        blackFont.setFontName("Arial"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        blackFont.setFontHeightInPoints((short) 10); // 10号字体 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        contentStyle.setFont(blackFont); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 创建标题行 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        XSSFRow titleRow = sheet.createRow(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        titleRow.setHeightInPoints(20); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 设置标题行背景色为灰色 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        XSSFCellStyle grayStyle = wb.createCellStyle(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        grayStyle.cloneStyleFrom(titleStyle); // 继承原有样式 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        grayStyle.setFillForegroundColor(new XSSFColor(new java.awt.Color(128, 128, 128), new DefaultIndexedColorMap())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        grayStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        grayStyle.setAlignment(HorizontalAlignment.CENTER); // 水平居中 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        grayStyle.setVerticalAlignment(VerticalAlignment.CENTER); // 垂直居中 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 内容样式也设置为居中 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        contentStyle.setAlignment(HorizontalAlignment.CENTER); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        contentStyle.setVerticalAlignment(VerticalAlignment.CENTER); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 创建白色加粗字体 (标题行字体) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        XSSFFont whiteBoldFont = wb.createFont(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        whiteBoldFont.setColor(new XSSFColor(java.awt.Color.WHITE, new DefaultIndexedColorMap())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        whiteBoldFont.setBold(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        whiteBoldFont.setFontName("Arial"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        whiteBoldFont.setFontHeightInPoints((short) 10); // 10号字体.setFontHeightInPoints((short) 10); // 10号字体 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        grayStyle.setFont(whiteBoldFont); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (int i = 0; i < title.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            XSSFCell cell = titleRow.createCell(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String titleStr = title[i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            cell.setCellValue(titleStr.substring(0, titleStr.lastIndexOf(","))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            cell.setCellStyle(grayStyle);// 设置标题行样式 深灰色 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 填充数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            int rowNum = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (Object obj : list) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                XSSFRow row = sheet.createRow(rowNum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                row.setHeightInPoints(20); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (int colNum = 0; colNum < title.length; colNum++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    String titleStr = title[colNum]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    String fieldName = titleStr.substring(titleStr.lastIndexOf(",") + 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Object value = getFieldValue(obj, fieldName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (value == null) value = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (value instanceof Date) value = sdf.format(value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    XSSFCell cell = row.createCell(colNum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cell.setCellValue(value.toString()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cell.setCellStyle(contentStyle); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                rowNum++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 其他列自动调整 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 优化列宽计算 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for (int i = 0; i < title.length; i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                sheet.autoSizeColumn(i); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 设置最小列宽 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                sheet.setColumnWidth(i, Math.max(sheet.getColumnWidth(i), 5000)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 设置输出 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String fileName = (sheetTitle == null ? "导出" : sheetTitle) + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    new SimpleDateFormat("yyyy-MM-dd HH-mm-ss").format(new Date()) + ".xlsx"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            response.reset(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            response.setHeader("Content-Disposition", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    "attachment;filename=" + new String(fileName.getBytes("GBK"), "ISO-8859-1")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ServletOutputStream out = response.getOutputStream(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            wb.write(out); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            out.flush(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            out.close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } catch (Exception ex) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Logger.getLogger(ExcelUtilPageData.class.getName()).log(Level.SEVERE, null, ex); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private static Object getFieldValue(Object obj, String fieldName) throws Exception { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (obj instanceof Map) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return ((Map) obj).get(fieldName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Field f = obj.getClass().getDeclaredField(fieldName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            f.setAccessible(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return f.get(obj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |