下载文件的方式
下载Excel文档/导出数据
前端代码
window.open("xxx地址?name=xx&age=xx")
后端代码
controller代码
@GetMapping(value = "/download")
public void download(HttpServletRequest request, HttpServletResponse response, @RequestParam String name, @RequestParam String age) throws IOException {
// 1、查询要导出的数据
List<user> userList= userService.listUser(name,age);
// 2、组织数据
Map<Object, Object> valuesMap = new HashMap<>();
valuesMap.put("infoList", userList);
valuesMap.put("ddate", DateUtil.format(new Date(), "yyyy-MM-dd"));
// 3、使用导出方法类导出数据
ExcelExportUtils.exportExcelFile(valuesMap, "用户清单" + DateUtil.format(new Date(), "yyyy-MM-dd"),"export/userTemplate.xls", request, response);
}
ExcelExportUtils工具类代码
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.IOUtils;
import org.apache.poi.ss.usermodel.Workbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import net.sf.jxls.transformer.XLSTransformer;
public class ExcelExportUtils {
private static Logger logger = LoggerFactory.getLogger(ExcelExportUtils.class);
public static void exportExcelFile(Map valuesMap, String fileNameParam, String templatePath, HttpServletRequest request, HttpServletResponse response) {
try {
XLSTransformer transformer = new XLSTransformer();
InputStream is = ExcelExportUtils.class.getClassLoader().getResourceAsStream(templatePath); //拿到资源
Workbook book = transformer.transformXLS(is, valuesMap);
String fileName = encodeExportFileName(request, fileNameParam + ".xls");
response.reset();
response.setContentType("application/x-msdownload;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition", "attachment;filename=\"" + fileName + "\"");
book.write(response.getOutputStream());
IOUtils.closeQuietly(response.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
logger.error(e.toString());
} finally {
try {
IOUtils.closeQuietly(response.getOutputStream());
} catch (IOException e) {
logger.error(e.toString());
}
}
}
}
下载文件
前端代码
window.open("xxx地址")
controller代码
@GetMapping(value = "/download/template")
public void downloadTemplate(HttpServletRequest request, HttpServletResponse response) throws Exception {
InputStream inStream = ManageRecordController.class.getClassLoader()
.getResourceAsStream("export/template.docx"); // 拿到资源
String userAgent = request.getHeader("user-agent");
String fileName = "";
// IE Browser
if (userAgent != null && userAgent.toLowerCase().indexOf("trident") > -1) {
fileName = URLEncoder.encode("模板.docx", "UTF-8");
} else {// Firefox, Chrome etc.
fileName = new String("模板.docx".getBytes("UTF-8"), "ISO-8859-1");
}
FileDownloadHandle.downloadFile(IOUtils.toByteArray(inStream), fileName, response);
}
FileDownloadHandle工具类代码
public class FileDownloadHandle {
public static void downloadFile(byte[] content, String name, HttpServletResponse response) {
OutputStream outputStream = null;
try {
outputStream = response.getOutputStream();
response.setContentType("application/octet-stream; charset=UTF-8");
response.setHeader("Content-Disposition", "attachment; filename=\""
+ name + "\"");
IOUtils.write(content, outputStream);
outputStream.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
IOUtils.closeQuietly(outputStream);
}
}
}