poi导出excel

/**
     * 文件下载
     *
     * @param response
     * @param list      查询数据集合
     * @param filename  文件名前缀
     * @param title     属性名称
     * @param strTitleE 属性
     * @throws Exception
     */
    public static void export(HttpServletResponse response, List list, String filename, List<String> title, String[] strTitleE) throws Exception {
        int[] widths = {15, 15, 15, 15};
        XSSFWorkbook wb = new XSSFWorkbook();
        // 设置列宽
        XSSFSheet sheet = setSheet(wb, filename, widths);
        //XSSFSheet sheet = wb.createSheet(filename);
        // 设置Excel表格头数据
        setTitleRowData(wb, sheet, title);
        setRowData(wb, sheet, list, strTitleE);
        // 导出Excel(单工作表)
        exportToExcel(response, wb, filename);
    }
/**
     * 设置列宽 <br />
     *
     * @param workbook
     * @param sheetTitle
     * @param widths
     * @return
     */
    public XSSFSheet setSheet(XSSFWorkbook workbook, String sheetTitle, int[] widths) {
        XSSFSheet sheet = workbook.createSheet(sheetTitle);// 建立新的sheet对象
        for (int i = 0; i < widths.length; i++) {
            sheet.setColumnWidth(i, (int) 256 * widths[i]);
        }
        return sheet;
    }
 /**
     * 设置Excel表格头数据 <br />
     *
     * @param workbook
     * @param sheet
     * @param titles
     * @throws Exception
     */
    public void setTitleRowData(XSSFWorkbook workbook, XSSFSheet sheet, List<String> titles) {
        XSSFRow rowTitle = sheet.createRow(0);// 建立新行
        XSSFCellStyle cellStyle = setCellStyle(workbook);
        for (int i = 0; i < titles.size(); i++) {
            XSSFCell cell = rowTitle.createCell(i);
            // cell.setEncoding(HSSFCell.ENCODING_UTF_16); //设置cell编码解决中文高位字节截断
            cell.setCellValue(titles.get(i));
            cell.setCellStyle(cellStyle);
        }
    }
/**
     * 为Excel添加行数据 <br />
     *
     * @param workbook
     * @param sheet
     * @param lists
     * @throws Exception
     */
    @SuppressWarnings({"rawtypes", "unchecked"})
    public void setRowData(XSSFWorkbook workbook, XSSFSheet sheet, List lists, String[] valueField) throws Exception {
        if (valueField == null || valueField.length < 1) {
            setRowData(workbook, sheet, lists);
        }
        for (int i = 1; i <= lists.size(); i++) {
            // HSSFRow row = sheet.createRow((short)i);//建立新行
            XSSFRow row = sheet.createRow(i); // 不用short类型,支持大数据量导出
            Object obj = lists.get(i - 1);
            Class clazz = obj.getClass();
            int index = 0;
            for (int j = 0; j < valueField.length; j++) {
                Method method = clazz.getMethod("get" + valueField[j].substring(0, 1).toUpperCase() + valueField[j].substring(1));
                Object objValue = method.invoke(lists.get(i - 1));
                XSSFCell cell = row.createCell(index);
                if (objValue != null) {
                    cell.setCellValue(objValue.toString());
                }
                index++;
            }
        }
    }
/**
     * 导出Excel(单工作表)
     *
     * @param response
     * @param title
     * @throws Exception
     */
    public static void exportToExcel(HttpServletResponse response, XSSFWorkbook workbook, String title)
            throws Exception {
        try {
            String time = (new SimpleDateFormat("yyyyMMddHHmm")).format(new Date());
            String sFileName = new String((title + "_" + time + ".xls").getBytes("gbk"), "ISO-8859-1");
            response.setHeader("Content-Disposition", "attachment;filename=".concat(sFileName));
            response.setHeader("Connection", "close");
            response.setHeader("Content-Type", "application/vnd.ms-excel");
            workbook.write(response.getOutputStream());
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            workbook.close();
        }
    }

  

//调用导出的方法
@RequestMapping("/exportList")
@ResponseBody
public void downDsMapPub(HttpServletResponse response){
  //list 表示查询的集合
  //titleList 表示导出的字段的中文名
   //strTitle 表示导出的字段,必须与实体类上的名字相对应
  //fileName 表示导出的文件名 ExcelUtils.export(response,list,fileName,titleList,strTitle); }

  

posted on 2017-10-20 15:44  火玉  阅读(191)  评论(0编辑  收藏  举报