导出文件

js:	export:function(){
	var dt=$("#form").serializeJSON();
	// 注意这里因为url中有中文等字符,所以需要编码
	// 还有这里url中/userFilter前添加了..,取的是相对路径
	location.href=encodeURI(context+'/export.json?parameterMap='+ JSON.stringify(dt));
}


工具类:
public class ExcelportUtil {
/**
 * 导出Excel普通格式通用方法
 * @param sheetName sheet名称
 * @param title 
 * @param values
 * @param wb
 * @author FMNS
 * @return
 */
public static HSSFWorkbook getHSSFWorkbook(String sheetName, String []title, String [][]values, HSSFWorkbook wb,List<String> arrList) {
	
    // 第一步,创建一个HSSFWorkbook,对应一个Excel文件
    if(wb == null){
        wb = new HSSFWorkbook();
    }
    if(arrList.size()==0 || null == arrList) {
    	arrList = new ArrayList<String>();
    }
    
    // 第二步,在workbook中添加一个sheet,对应Excel文件中的sheet
    HSSFSheet sheet = wb.createSheet(sheetName);
    // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制
    HSSFRow row = sheet.createRow(0);
    // 第四步,创建单元格,并设置值表头 设置表头居中
    HSSFCellStyle titleStyle = wb.createCellStyle();
    HSSFCellStyle cellStyle = wb.createCellStyle();
    HSSFCellStyle cellStyleRed = wb.createCellStyle();
    //设置字体
    Font headFont = wb.createFont();
    Font cellFont = wb.createFont();
    headFont.setFontHeightInPoints((short)10);
    headFont.setFontName("宋体");
    headFont.setItalic(false);
    headFont.setStrikeout(false);
    cellFont.setColor(HSSFColor.RED.index);
    titleStyle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);
    // 创建一个居中格式
    titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); 
    titleStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
    titleStyle.setFont(headFont);
    cellStyle.setFillForegroundColor(HSSFColor.LIGHT_GREEN.index);
    cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
    //cellStyleRed.setFillForegroundColor(HSSFColor.RED.index);
   // cellStyleRed.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
    cellStyleRed.setFont(cellFont);
/*        cellStyleRed.setWrapText(true);
    cellStyle.setWrapText(true);
*/        //声明列对象s
    HSSFCell cell = null;
    //创建标题
    for(int i=0;i<title.length;i++){
        cell = row.createCell(i);
        cell.setCellValue(title[i]);
        cell.setCellStyle(titleStyle);      
    }

    //创建内容
    for(int i=0;i<values.length;i++){
        row = sheet.createRow(i + 1);
        for(int j=0;j<values[i].length;j++){
            //将内容按顺序赋给对应的列对象
            row.createCell(j).setCellValue(values[i][j]);
            if(arrList.contains(row.getRowNum()+"_"+j)) {
            	 row.getCell(j).setCellStyle(cellStyleRed);
            }else {
            	row.getCell(j).setCellStyle(cellStyle);   
            }
        }
    }
    for(int i=0;i<title.length;i++){
        sheet.autoSizeColumn(i,true);
    }

	return wb;
}
/**
 * 发送响应流方法
 */
public static void setResponseHeader(HttpServletResponse response, String fileName) {
    try {
        try {
            fileName = new String(fileName.getBytes(), "ISO8859-1");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        response.setContentType("application/octet-stream;charset=ISO8859-1");
        response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
        response.addHeader("Pargam", "no-cache");
        response.addHeader("Cache-Control", "no-cache");
    } catch (Exception ex) {
        ex.printStackTrace();
    }

}

}



service:public void getExport(HttpServletRequest request, HttpServletResponse response) {
		BusinessManage manage=new BusinessManage();
		try {
		    // 对应前端的编码,在这里进行解码,并解析json为Map
		    String value = URLDecoder.decode(request.getParameter("parameterMap"), "UTF-8");
		    manage = JSON.parseObject(value,BusinessManage.class);
		} catch (UnsupportedEncodingException e) {
		    e.printStackTrace();
		}
		SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		//获取数据
		List<BusinessManage> list=businessManageMapper.selectExport(manage);
		if(null!=list && list.size()>0){
			String[] title=new String[] {"XX","XX","XX","XX","XX","XX","XX","XX","XX","XX","XX","XX"};
			String[][] content=new String[list.size()][12];
			String sheetName="导出表";
			String fileName=sheetName+".xls";
			List<String> array= new ArrayList<>();
			for(int i=0;i<list.size();i++) {
				content[i]=new String[title.length];
				BusinessManage record=list.get(i);
				content[i][0]=record.getXX();
				content[i][1]=record.getXX();
				content[i][2]=record.getXX();
				content[i][3]=record.getXX();
				content[i][4]=record.getXX();
				content[i][5]=record.getXX();
				content[i][6]=record.getXX();
				content[i][7]=record.getXX();
				content[i][8]=sf.format(record.getXX());
				content[i][9]=XXEnum.getByCode(record.getXX().toString());
				content[i][10]=sf.format(record.getXX());
				content[i][11]=record.getXX();
			}
			HSSFWorkbook wb = ExcelportUtil.getHSSFWorkbook(sheetName, title, content, null,array);
            try {
                ExcelportUtil.setResponseHeader(response, fileName);
                OutputStream os = response.getOutputStream();
                wb.write(os);
                os.flush();
                os.close();
            }catch (Exception e) {
				e.printStackTrace();
				logger.error("excel导出错误:"+e);
			}
		}else{
			logger.error("无数据可导");
			 throw new RuntimeException("无数据可导");
		}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值