方法一
生成excel模板
@RequestMapping("/downloadExcel")
public void downloadExcel(HttpServletResponse response, HttpServletRequest request) {
String [] excelHeader = {"姓名","手机号(必填)","渠道名","产品名","手机操作系统(IOS/安卓)","是否是XX数据"};
ListFileExport工具类:
package com.abc.common.utils.file;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 文件导出工具
* @author abc
* @date 2019/01/08
*/
public class FileExport {
private static final Logger logger = LoggerFactory.getLogger(FileExport.class);
/** CSV文件列分隔符 */
private static final String CSV_COLUMN_SEPARATOR = ",";
private static final String CSV_COLUM_TABLE = "\t";
/** CSV文件列分隔符 */
private static final String CSV_RN = "\r\n";
/**
* 导出Excel文件
*
* @param excelHeader
* 导出文件中表格头
* @param list
* 导出的内容
* @param response
* HttpServletResponse对象,用来获得输出流向客户端写导出的文件
* @param sheetName
* Excel的sheet名称,加上时间戳作为导出文件的名称
*/
public static void exportExcel(String [] excelHeader, List导出CSV文件
@GetMapping("/exportFailureRecord")
public void exportFailureRecord(String batchNumber, HttpServletResponse response) {
if (StringUtils.isBlank(batchNumber)) {
log.warn("失败记录导出失败,批次号为空...");
return;
}
//这里根据你的业务查询出数据
List list = importFailureRecordService.selectList(new EntityWrapper()
.eq("is_delete", 0)
.eq("batch_number", batchNumber));
if (CollectionUtil.isEmpty(list)) {
log.warn("未查询到可导出的数据...");
return;
}
log.info("===========查询到{}条可导出数据==============", list.size());
String sTitle = "用户姓名,手机号,失败原因";
String fName = "xxx失败记录数据_";
String mapKey = "userName,userPhone,failureReason";
List 方法二
立即学习“Java免费学习笔记(深入)”;
/**
* 描述:下载外部案件导入模板
* @param response
* @param request
* @author songfayuan
* 2018年6月7日下午5:03:59
*/
@RequestMapping("/downloadExcel")
@ResponseBody
public void downloadExcel(HttpServletResponse response,HttpServletRequest request) {
//方法一:直接下载路径下的文件模板(这种方式貌似在SpringCloud和Springboot中,打包成JAR包时,无法读取到指定路径下面的文件,不知道记错没,你们可以自己尝试下!!!)
try {
//获取要下载的模板名称
String fileName = "ApplicationImportTemplate.xlsx";
//设置要下载的文件的名称
response.setHeader("Content-disposition", "attachment;fileName=" + fileName);
//通知客服文件的MIME类型
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
//获取文件的路径
String filePath = getClass().getResource("/template/" + fileName).getPath();
FileInputStream input = new FileInputStream(filePath);
OutputStream out = response.getOutputStream();
byte[] b = new byte[2048];
int len;
while ((len = input.read(b)) != -1) {
out.write(b, 0, len);
}
//修正 Excel在“xxx.xlsx”中发现不可读取的内容。是否恢复此工作薄的内容?如果信任此工作簿的来源,请点击"是"
response.setHeader("Content-Length", String.valueOf(input.getChannel().size()));
input.close();
//return Response.ok("应用导入模板下载完成");
} catch (Exception ex) {
logger.error("getApplicationTemplate :", ex);
//return Response.ok("应用导入模板下载失败!");
}
//方法二:可以采用POI导出excel,但是比较麻烦(这里类似方法一)
/*try {
Workbook workbook = new HSSFWorkbook();
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("application/x-download");
String filedisplay = "导入模板.xls";
filedisplay = URLEncoder.encode(filedisplay, "UTF-8");
response.addHeader("Content-Disposition", "attachment;filename="+ filedisplay);
// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
Sheet sheet = workbook.createSheet("导入模板");
// 第三步,在sheet中添加表头第0行
Row row = sheet.createRow(0);
// 第四步,创建单元格,并设置值表头 设置表头居中
CellStyle style = workbook.createCellStyle();
style.setAlignment(CellStyle.ALIGN_CENTER); // 创建一个居中格式
Cell cell = row.createCell(0);
cell.setCellValue("商品名称");
cell.setCellStyle(style);
sheet.setColumnWidth(0, (25 * 256)); //设置列宽,50个字符宽
cell = row.createCell(1);
cell.setCellValue("商品编码");
cell.setCellStyle(style);
sheet.setColumnWidth(1, (20 * 256)); //设置列宽,50个字符宽
cell = row.createCell(2);
cell.setCellValue("商品价格");
cell.setCellStyle(style);
sheet.setColumnWidth(2, (15 * 256)); //设置列宽,50个字符宽
cell = row.createCell(3);
cell.setCellValue("商品规格");
cell.setCellStyle(style);
sheet.setColumnWidth(3, (15 * 256)); //设置列宽,50个字符宽
// 第五步,写入实体数据 实际应用中这些数据从数据库得到
row = sheet.createRow(1);
row.createCell(0, Cell.CELL_TYPE_STRING).setCellValue(1);
row.createCell(1, Cell.CELL_TYPE_STRING).setCellValue(2);
row.createCell(2, Cell.CELL_TYPE_STRING).setCellValue(3); //商品价格
row.createCell(3, Cell.CELL_TYPE_STRING).setCellValue(4); //规格
// 第六步,将文件存到指定位置
try
{
OutputStream out = response.getOutputStream();
workbook.write(out);
out.close();
}
catch (Exception e)
{
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}*/
}模板位置:











