package com.whyc.util; import org.apache.poi.hssf.usermodel.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.OutputStream; /** * @Description: 表格工具类 */ public class ExcelUtil { //excel导出 public static void exportExcel(String fileName, String sheetName, String[] title, Object[][] values, HSSFWorkbook wb, HttpServletResponse response) { //第一步,创建一个webbook,即excel的文档对象 if (wb == null) { wb = new HSSFWorkbook(); } //第二步,在webbook中添加一个sheet,即excel的表单 HSSFSheet sheet = wb.createSheet(sheetName); //设置列宽度 //判断是否为空 if (values != null && values.length > 0) { for (int i = 0; i < values[0].length; i++) { sheet.setColumnWidth(i, 256 * 15); } } //第三步,在sheet中添加表头第0行,即excel的行 HSSFRow row = sheet.createRow(0); //第四步,创建单元格,并设置值表头,设置表头居中,即excel格子单元 HSSFCellStyle style = wb.createCellStyle(); //居中格式 style.setAlignment(HSSFCellStyle.ALIGN_CENTER); //边框填充 ///*style.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框 //style.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框 //style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框 //style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框*/ //背景颜色 //style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);//设置前景填充样式 //style.setFillForegroundColor(HSSFColor.DARK_RED.index);//前景填充色 HSSFCell cell; //创建标题 for (int i = 0; i < title.length; i++) { cell = row.createCell(i); cell.setCellValue(title[i].toString()); cell.setCellStyle(style); } // 创建内容 for (int i = 0; i < values.length; i++) { row = sheet.createRow(i + 1); for (int j = 0; j < values[i].length; j++) { cell = row.createCell(j); if (values[i][j] != null) { cell.setCellValue(values[i][j].toString()); } else { cell.setCellValue(""); } cell.setCellStyle(style); } } //将文件存到指定位置 OutputStream os = null; try { os = response.getOutputStream(); } catch (IOException e) { e.printStackTrace(); } try { //response.setCharacterEncoding("UTF-8"); response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes()) + ".xls"); //不保存缓存信息与response.reset同样效果 response.addHeader("Pragma", "no-cache"); response.addHeader("Cache-Control", "no-cache"); wb.write(os); os.flush(); os.close(); } catch (IOException e) { e.printStackTrace(); } } //构造指定的单元格样式 public static HSSFCellStyle createCellStyle(HSSFWorkbook wb,String fontType,int fontSize,boolean center,boolean blod){ HSSFCellStyle cellStyle = wb.createCellStyle(); //单元格样式 HSSFFont font = wb.createFont(); font.setFontName(fontType); font.setFontHeightInPoints((short) fontSize); //设置字体大小 font.setBoldweight(blod?HSSFFont.BOLDWEIGHT_BOLD:HSSFFont.BOLDWEIGHT_NORMAL); //粗体显示 cellStyle.setFont(font); //标题样式 cellStyle.setAlignment(center?HSSFCellStyle.ALIGN_CENTER_SELECTION:HSSFCellStyle.ALIGN_LEFT); // 居中 return cellStyle; } }