1 OutputStream out = response.getOutputStream(); 2 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmmss"); 3 response.setCharacterEncoding("UTF-8"); 4 response.setContentType("application/vnd.ms-excel"); 5 response.setHeader("Content-disposition", "attachment;filename="+ sdf.format(new Date())+".xls"); 6 ExcelUtil.exportExcel(dataList,"cure_plans.xls",out);
public static <T> void exportExcel(List<Map> dataList, String filename, OutputStream out){ /* try { //读取模板 InputStream in = new FileInputStream("C:\\Users\\yinbx\\IdeaProjects\\JCogent\\cogent-common\\src\\main\\java\\com\\cogent\\template\\cure_plans.xls"); //通过模板创建工作簿 HSSFWorkbook wb = new HSSFWorkbook(in); //获取shell HSSFSheet sheet = wb.getSheetAt(0); //获取模板的内容 HSSFRow Trow = sheet.getRow(2); int i=3; HSSFRow row = null; HSSFCell cell = null; for (Map map: dataList) {//遍历数据集填充到excel row = sheet.createRow(i); for(int j=0; j<Trow.getLastCellNum(); j++){ cell = row.createCell((short)j); //cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellType(HSSFCell.CELL_TYPE_STRING); cell.setCellValue(map.get(Trow.getCell(j).getStringCellValue()).toString()); } i++; } wb.write(out); out.close(); }catch (IOException e){ System.out.println("文件流异常"); e.printStackTrace(); }*/ try { WorkbookSettings settings = new WorkbookSettings(); settings.setWriteAccess(null); settings.setEncoding("UTF-8"); Workbook wb = Workbook.getWorkbook(new File("C:\\Users\\yinbx\\IdeaProjects\\JCogent\\cogent-common\\src\\main\\java\\com\\cogent\\template\\cure_plans.xls")); WritableWorkbook wwb = Workbook.createWorkbook(out, wb,settings); WritableSheet sheet = wwb.getSheet(0); int i =3; Label label; for(Map map : dataList){ for(int j =0; j<sheet.getColumns(); j++){ label =new Label(j,i,map.get(sheet.getCell(j,2).getContents()).toString()); sheet.addCell(label); } i++; } wwb.write(); wwb.close(); } catch (IOException e) { e.printStackTrace(); } catch (BiffException e) { e.printStackTrace(); } catch (RowsExceededException e) { e.printStackTrace(); } catch (WriteException e) { e.printStackTrace(); } }
文件下载之后内容全是乱码,尝试改过响应头的格式
是中文乱码?还是导出文件整个都是乱码的?
整个文件全部乱码
@究其一生: 先确定一下是接口的问题, 还是前端调用的问题,直接地址栏访问接口, 如果直接是下载文件,这个文件没问题的话就是前端调用的问题,
看了你贴的代码, 没发现什么问题, 先排查一下吧, 我之前碰到过前端调用方式不对,导致文件是乱码的,后来确认直接地址栏访问接口, 弹出的下载文件没问题, 后来叫前端去解决了QAQ
@、熙和: 这个测试的时候我是用的swagger测试的,可能和正常掉用不同,明天我用实际操作访问试一下
@究其一生: 这个前端应该是location.href='xxxx'调用的, swagger那个是发的ajax请求, 当然会有问题啦