package com.wdh.poi; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import org.apache.log4j.Logger; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.hssf.util.HSSFCellUtil; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.Font; import org.apache.poi.ss.util.CellRangeAddress; /** * Created by wangdonghua on 2017/2/27. * Excel工具类 */ public class ExcelUtils { private static final Logger log=Logger.getLogger(ExcelUtils.class); /** * 导出excel * */ public static void writeWorkbook(HSSFWorkbook wb,String fileName){ FileOutputStream fos=null; try { fos=new FileOutputStream(fileName); wb.write(fos); } catch (FileNotFoundException e) { log.error(new StringBuffer("[").append(e.getMessage()).append("]").append(e.getCause())); } catch (IOException e) { log.error(new StringBuffer("[").append(e.getMessage()).append("]").append(e.getCause())); } finally{ try { if(fos!=null){ fos.close(); } } catch (IOException e) { log.error(new StringBuffer("[").append(e.getMessage()).append("]").append(e.getCause())); } } } /** * 建立sheet * */ public static HSSFSheet createSheet(HSSFWorkbook wb,String sheetName){ HSSFSheet sheet=wb.createSheet(sheetName); sheet.setDefaultColumnWidth(12); sheet.setGridsPrinted(false); sheet.setDisplayGridlines(false); return sheet; } /** * 建立行 * */ public static HSSFRow createRow(HSSFSheet sheet,int rowNum,int height){ HSSFRow row=sheet.createRow(rowNum); row.setHeight((short)height); return row; } /** * 建立单元格 * */ public static CellStyle createCellStyle(HSSFWorkbook wb,short backgroundColor,short foregroundColor,short halign,Font font){ CellStyle cs=wb.createCellStyle(); cs.setAlignment(halign); cs.setVerticalAlignment(CellStyle.VERTICAL_CENTER); cs.setFillBackgroundColor(backgroundColor); cs.setFillForegroundColor(foregroundColor); cs.setFillPattern(CellStyle.SOLID_FOREGROUND); cs.setFont(font); cs.setBorderLeft(HSSFCellStyle.BORDER_THIN);// 左边框 cs.setBorderTop(HSSFCellStyle.BORDER_THIN);// 上边框 cs.setBorderRight(HSSFCellStyle.BORDER_THIN);// 右边框 cs.setBorderBottom(HSSFCellStyle.BORDER_THIN);// 下边框 return cs; } /** * 建立粗边框单元格 * */ public static CellStyle createBorderCellStyle(HSSFWorkbook wb,short backgroundColor,short foregroundColor,short halign,Font font){ CellStyle cs=wb.createCellStyle(); cs.setAlignment(halign); cs.setVerticalAlignment(CellStyle.VERTICAL_CENTER); cs.setFillBackgroundColor(backgroundColor); cs.setFillForegroundColor(foregroundColor); cs.setFillPattern(CellStyle.SOLID_FOREGROUND); cs.setFont(font); cs.setBorderLeft(CellStyle.BORDER_DASHED); cs.setBorderRight(CellStyle.BORDER_DASHED); cs.setBorderTop(CellStyle.BORDER_DASHED); cs.setBorderBottom(CellStyle.BORDER_DASHED); return cs; } /** * 建立单元格 * */ public static HSSFCell createCell(HSSFRow row,int cellNum,CellStyle style){ HSSFCell cell=row.createCell(cellNum); cell.setCellStyle(style); return cell; } /** * 合并单元格 * */ public static int mergeCell(HSSFSheet sheet,int firstRow,int lastRow,int firstColumn,int lastColumn){ return sheet.addMergedRegion(new CellRangeAddress(firstRow,lastRow,firstColumn,lastColumn)); } /** * 设置字体 * */ public static Font createFont(HSSFWorkbook wb,short boldweight,short color,short size){ Font font=wb.createFont(); font.setBoldweight(boldweight); font.setColor(color); font.setFontHeightInPoints(size); return font; } /** * 取值 * */ public static String getCellStringValue(HSSFCell cell){ String strCell = ""; if(cell == null){ return ""; } try { switch (cell.getCellType()) { case HSSFCell.CELL_TYPE_STRING: strCell = cell.getStringCellValue(); break; case HSSFCell.CELL_TYPE_NUMERIC: strCell = String.valueOf(cell.getNumericCellValue()); break; case HSSFCell.CELL_TYPE_BOOLEAN: strCell = String.valueOf(cell.getBooleanCellValue()); break; case HSSFCell.CELL_TYPE_BLANK: strCell = ""; break; default: strCell = ""; break; } if (strCell.equals("") || strCell == null) { return ""; } if (cell == null) { return ""; } } catch (Exception e) { e.printStackTrace(); return ""; } return strCell.trim(); } /** * 设置合并区域样式 * */ public static void setRegionStyle(HSSFSheet sheet, CellRangeAddress ca,CellStyle style) { for (int i = ca.getFirstRow(); i <= ca.getLastRow(); i++) { HSSFRow row = HSSFCellUtil.getRow(i, sheet); for (int j = ca.getFirstColumn(); j <= ca.getLastColumn(); j++) { HSSFCell cell = HSSFCellUtil.getCell(row, j); cell.setCellStyle(style); } } } /** * 建立title * */ public void createTile(HSSFRow row,CellStyle style,String[] titles){ HSSFCell cell = null; for(int i=0;i<titles.length;i++){ cell = row.createCell(i); cell.setCellStyle(style); cell.setCellValue(titles[i]); } } }