poi导出excel

来源:互联网 发布:linux怎么删除文件夹 编辑:程序博客网 时间:2024/04/29 21:16
poi导出excel
==========================================================
一个excel表格(HSSFWorkbook):HSSFWorkbook wb = new HSSFWorkbook();

一个工作表格(sheet):                    HSSFSheet sheet = wb.createSheet("测试表格");

一行(row):                                        HSSFRow row = sheet.createRow(0);

一个单元格(cell):                            HSSFCell cell = row.createCell((short)0);

单元格格式(cellstyle):                    HSSFCellStyle style4 = wb.createCellStyle();

单元格字体(font):                            HSSFFont font = wb.createFont();

========================================================

java示例---poi导出excel工具类

/** * poi导出excel工具类 */public class ExcelUtils {private static Logger LOG = LoggerFactory.getLogger(ExcelUtils.class);/** * 合并两个数组 * @param first * @param second * @return */public static <T> T[] concatArray(T[] first, T[] second) {  T[] result = Arrays.copyOf(first, first.length + second.length);  System.arraycopy(second, 0, result, first.length, second.length);  return result;  }/** * 写入Excel * @param sheet 工作表格 * @param style 表格样式 * @param columnMap 列名集合 * @param clazz对象类型 * @param objList 数据集合 * @throws Exception */public static void writeToExcel(HSSFSheet sheet, HSSFCellStyle style, Map<String,String> columnMap, Class<?> clazz, List<?> objList) throws Exception{HSSFRow row = sheet.createRow(0);//一行//创建表头HSSFCell cell = null;Class<?> parentClass = clazz.getSuperclass();//对象类型中有继承的情况Field [] parentFields = parentClass.getDeclaredFields();Field [] subFields =  clazz.getDeclaredFields();Field [] fields = concatArray(parentFields, subFields);//字段数组int k = 0;for(int i=0; i<fields.length; i++){if(!CollectionUtils.isEmpty(columnMap) && columnMap.keySet().contains(fields[i].getName())){sheet.setColumnWidth(k, 4000);//设置列宽cell = row.createCell(k++);//一个单元格cell.setCellValue((String)columnMap.get(fields[i].getName()));cell.setCellStyle(style);//设置样式}}//数据区for(int i=0; i<objList.size(); i++){                    Object obj = objList.get(i);                    int key = 0;                    row = sheet.createRow(i + 1);                    for(int j=0; j<fields.length; j++){                    if(!CollectionUtils.isEmpty(columnMap) && columnMap.keySet().contains(fields[j].getName())){                  fields[j].setAccessible(true);                  Object cellValue = fields[j].get(obj);                  if(cellValue == null){                 row.createCell(key++).setCellValue((String)(""));                 continue;                   }                   if(Integer.class == cellValue.getClass()){                 row.createCell(key++).setCellValue((Integer)cellValue);                   }else if(cellValue instanceof Timestamp){                 row.createCell(key++).setCellValue((String)cellValue.toString());                   }else if(cellValue instanceof Double){                 row.createCell(key++).setCellValue((Double)(cellValue));                   }else{                 row.createCell(key++).setCellValue((String)(cellValue));                   }                 }                     }       }}/** * 设置返回Excel的报文头 * @param wb 表格 * @param response * @param fileName 文件名称 */public static void setResponseExcelHead(HSSFWorkbook wb, HttpServletResponse response, String fileName){//设置下载Excel reponse的头response.setContentType("application/vnd.ms-excel;charset=utf-8"); try {fileName = new String(fileName.getBytes(), "ISO-8859-1");} catch (UnsupportedEncodingException e) {LOG.error("setResponseExcelHead()设置返回Excel的报文头-fileName设置编码-出错,错误信息:{}", e);}                response.setHeader("Content-Disposition", "attachment;filename="+fileName);   OutputStream os = null;try {os = response.getOutputStream();wb.write(os);} catch (IOException e) {LOG.error("setResponseExcelHead()设置返回Excel的报文头-wb.write-出错,错误信息:{}", e);}finally{try {os.flush();os.close();} catch (IOException e) {LOG.error("setResponseExcelHead()设置返回Excel的报文头-OutputStream-close-出错,错误信息:{}", e);}}}/** * 创建表格样式 * HSSFWorkbook wb 表格 */public static HSSFCellStyle getStyle(HSSFWorkbook wb){//创建样式HSSFCellStyle style = wb.createCellStyle();style.setAlignment(HSSFCellStyle.ALIGN_CENTER);style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框  style.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框    style.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框    style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框  //创建字体HSSFFont font = wb.createFont();    font.setFontName("黑体"); font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);font.setFontHeightInPoints((short) 13);//设置字体大小  style.setFont(font);return style;}/*** * 导出Excel   * @param fileName 文件名称 * @param sheetName 工作表格名称 * @param columnMap 列名集合 * @param clazz数据对象类型 * @param objList 数据集合 * @param response * @throws Exception */public static void exportExcel(String fileName, String sheetName, Map<String,String> columnMap, Class<?> clazz, List<?> objList,   HttpServletResponse response) throws Exception {HSSFWorkbook wb = new HSSFWorkbook();HSSFSheet sheet = wb.createSheet(sheetName);//创建表格样式HSSFCellStyle style = getStyle(wb);//写入ExcelwriteToExcel(sheet, style, columnMap, clazz, objList);//设置返回Excel的报文头setResponseExcelHead(wb, response, fileName);}}

0 0
原创粉丝点击