1、easyExcel
public void singleExport(List<ParkBaseInfoVO> list, HttpServletResponse response) throws IOException {
try{
// 设置响应信息,让浏览器下载文件
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
// 这里URLEncoder.encode可以防止中文乱码
String fileName = URLEncoder.encode("开发区基本信息表", "UTF-8");
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
EasyExcel.write(response.getOutputStream(), ParkBaseInfoVO.class).sheet(fileName).doWrite(list);
}catch (Exception e){
e.printStackTrace();
}finally {
//关闭流
response.flushBuffer();
}
}
2、easypoi
public void export(DmBaseReqDto dmBaseReqDto, HttpServletResponse response) {
Map<Integer, String> statusMap = statusList(1);
Map<String, String> lableTypeMap = getLableType(2);
Map<String, String> suggessDeptList = getSuggessDeptList();
String roleId = authManagerService.getRoleIdByLoginUser();
QueryWrapper<DmBase> query = query(dmBaseReqDto);
List<DmBase> dmBases = dmBaseMapper.selectList(query);
if (!CollectionUtil.isEmpty(dmBases)) {
List<DmBaseRespDto> list = getList(dmBases, statusMap, lableTypeMap, suggessDeptList, roleId);
try{
// 告诉浏览器用什么软件可以打开此文件
response.setHeader("content-Type", "application/vnd.ms-excel;chartset=utf-8");
// 下载文件的默认名称
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(moduleFileName,"UTF-8") + ".xls");
//编码
response.setCharacterEncoding("UTF-8");
//ExcelExportUtil.exportExcel()方法的第二个参数为对应实体class对象,第三个参数为对应实体的list集合
ExportParams exportParams = new ExportParams();
exportParams.setSheetName(moduleFileName);
exportParams.setType(ExcelType.XSSF);
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, DmBaseRespDto.class, list);
workbook.write(response.getOutputStream());
workbook.close();
}catch (Exception e){
e.printStackTrace();
}
}
}
3、下载远程文件为二进制流
HttpResponse httpResponse = HttpRequest.get(templateUrl).execute();
InputStream inputStream = httpResponse.bodyStream();
// 设置响应头信息
response.setHeader("Content-Disposition", "attachment; filename=文件名");
response.setContentType("application/octet-stream");
response.setCharacterEncoding("UTF-8");
// 将远程文件写入响应流
ServletOutputStream outputStream = response.getOutputStream();
// 复制文件
byte[] buffer = new byte[1024];
int length;
while ((length = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, length);
}
// 关闭流
inputStream.close();
outputStream.close();