@RequestMapping(params="method=downloadExcel", method=RequestMethod.GET)
public ResponseEntity<byte[]> downloadExcel(HttpServletRequest request) throws UnsupportedEncodingException {
//设置Http头
HttpHeaders responseHeaders = new HttpHeaders();
responseHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM);
//报表的名字
String fileName = "发电机参数表.xls";
//模板的路径
String tplPath = "/WEB-INF/designer/componentCostQuery.xls";
//设置http头,设置文件下载名称
responseHeaders.add("content-disposition", "attachment;filename="+
newString(fileName.getBytes("gb2312"), "ISO8859-1" ));
//模板设计器
WorkbookDesigner designer = new WorkbookDesigner();
String path = request.getServletContext().getRealPath(tplPath);
//内存流
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ByteArrayOutputStream outputStream2 = new ByteArrayOutputStream();
try {
//创建工作簿 等于excel
Workbook wb = new Workbook(path);
designer.setWorkbook(wb);
//填充数据
//designer.setDataSource("Data", dataList);
//designer.setDataSource("title", "配件二维码查询表");
//绑定数据
designer.process();
//输出到内存流
wb.save(outputStream, wb.getFileFormat());
//POI API 目的删掉最后一个sheet
org.apache.poi.ss.usermodel.Workbook poiWorkbook = new HSSFWorkbook(
new ByteArrayInputStream(outputStream.toByteArray()));
int sheetcount = poiWorkbook.getNumberOfSheets();
poiWorkbook.removeSheetAt(sheetcount-1);
poiWorkbook.setActiveSheet(0);
poiWorkbook.write(outputStream2);
} catch (Exception e) {
throw new RuntimeException(e);
}
//返回一个下载的流
return new ResponseEntity<byte[]>(outputStream2.toByteArray(), responseHeaders, HttpStatus.OK);
}这些是后台代码
前台需要用window.location.href = 'ImportExcelController.do?method=downloadExcel';调用