Controller层
/**
* 导出excel
*/
@RequestMapping(value = "/loadExcel", method = RequestMethod.POST)
public void loadExcel(HttpServletResponse response) {
mallService.loadFlowsExcel(response);
}
Service层
public void loadFlowsExcel(HttpServletResponse response) {
//导出自己需要的数据列表 MallOrderDTO 类是我自己用的
List<MallOrderDTO> list = mallDao.getOrders(mallOrderDTO);
try {
HSSFWorkbook wb = new HSSFWorkbook();//创建HSSFWorkbook对象
HSSFSheet sheet = wb.createSheet("订单列表");//建立sheet对象
HSSFRow row1 = sheet.createRow(0); //在sheet里创建第一行,参数为行索引
HSSFCell cell = row1.createCell(0); //创建单元格
//标题
cell.setCellValue("订单列表");//设置单元格内容
CellStyle titleStyle = setHeaderStyle(wb);//设置单元格样式
cell.setCellStyle(titleStyle);
//合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列
sheet.addMergedRegion(new CellRangeAddress(0, 2, 0, 11));
/*------------导出excel的列名--------------*/
String[] cellValueArr = {"订单ID", "商城名称", "商品名称", "订单价格(元)", "订单时间", "商品数量", "买家", "手机", "发货地址", "运费", "订单状态","付款状态"};
HSSFRow row2 = sheet.createRow(3);
//创建单元格并设置单元格,设置单元格的长度和格式
for (int i = 0; i < cellValueArr.length; i++) {
if (i == 2) {
sheet.setColumnWidth(i, 15 * 256 * 2);
} else if (i == 4) {
sheet.setColumnWidth(i, 15 * 256 * 2);
} else if (i == 8) {
sheet.setColumnWidth(i, 15 * 256 * 2);
} else {
sheet.setColumnWidth(i, 15 * 256);
}
Cell headerCell = row2.createCell(i);
headerCell.setCellValue(cellValueArr[i]);
CellStyle cellStyle = setCellStyle(wb, i);
headerCell.setCellStyle(cellStyle);
}
//设置长短
/* sheet.setColumnWidth(9, 15 * 256);
sheet.setColumnWidth(10, 15 * 256);*/
//初始位置 数据出现的位置
int one = 5;
//查询列表数据
if (!CollectionUtils.isEmpty(list)) {
int size = list.size();
//在sheet里创建第三行
MallOrderDTO excel;
for (int i = 0; i < size; i++) {
HSSFRow row3 = sheet.createRow(i + one - 1);
excel = list.get(i);
String value;
for (int j = 0; j < cellValueArr.length; j++) {
Cell cell2 = row3.createCell(j);
//给当前单元格赋值 judgementValue 方法在下面
value = judgementValue(excel, j);
cell2.setCellValue(value);
CellStyle cellStyle = setCellStyle(wb, j);
cell2.setCellStyle(cellStyle);
}
}
}
// 将文件存到指定位置
OutputStream output = response.getOutputStream();
response.reset();
response.setContentType("application/vnd.ms-excel");
response.setHeader("Access-Control-Allow-Origin", "*");
//文件名这里可以改,注意保存格式为.xls
String exportFileName = "订单列表" + CommonUtil.getSimpleDateString() + ".xls";
String fileNameURL = URLEncoder.encode(exportFileName, "UTF-8");
response.setHeader("Content-disposition", "attachment;filename=" + fileNameURL + ";" + "filename*=utf-8''" + fileNameURL);
response.setContentType("application/vnd.ms-excel");
wb.write(output);
output.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 设置表头样式
*
* @param workbook
* @return
*/
private CellStyle setHeaderStyle(Workbook workbook) {
CellStyle cellStyle = workbook.createCellStyle();
//水平居中
cellStyle.setAlignment(HorizontalAlignment.CENTER_SELECTION);
//垂直居中
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
//设置边框
cellStyle.setBorderTop(BorderStyle.THIN);
cellStyle.setBorderRight(BorderStyle.THIN);
cellStyle.setBorderBottom(BorderStyle.THIN);
cellStyle.setBorderLeft(BorderStyle.THIN);
//设置字体
Font cellFont = workbook.createFont();
cellFont.setBold(true);
cellFont.setFontHeightInPoints((short) 18);//设置excel数据字体大小
cellFont.setFontName("仿宋_GB2312");
cellStyle.setFont(cellFont);
return cellStyle;
}
/**
* 设置单元格样式
*/
private CellStyle setCellStyle(Workbook workbook, int i) {
CellStyle cellStyle = workbook.createCellStyle();
//水平居中
cellStyle.setAlignment(HorizontalAlignment.CENTER_SELECTION);
//垂直居中
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
//设置边框
cellStyle.setBorderTop(BorderStyle.THIN);
cellStyle.setBorderRight(BorderStyle.THIN);
cellStyle.setBorderBottom(BorderStyle.THIN);
cellStyle.setBorderLeft(BorderStyle.THIN);
//设置字体
Font cellFont = workbook.createFont();
cellFont.setFontName("仿宋_GB2312");
cellStyle.setFont(cellFont);
return cellStyle;
}
/**
* 放入值 excel列表1
*
* @param excel
* @return
*/
private String judgementValue(MallOrderDTO excel, int j) {
String value = "";
switch (j) {
case 0:
//订单Id
value = StringUtils.isEmpty(excel.getId()) ? "": excel.getId();
break;
case 1:
//商城名称
value = StringUtils.isEmpty(excel.getStoreName()) ? "" : excel.getStoreName();
break;
case 2:
//商品名称
value = StringUtils.isEmpty(excel.getGoodsName()) ? "" : excel.getGoodsName();
break;
case 3:
//订单价格
value = StringUtils.isEmpty(excel.getGoodsPrice()) ? "" : excel.getGoodsPrice();
break;
case 4:
//订单时间
value = StringUtils.isEmpty(excel.getCreateTime()) ? "" : excel.getCreateTime();
break;
case 5:
//商品数量
value = StringUtils.isEmpty(excel.getGoodsNumber()) ? "" : excel.getGoodsNumber();
break;
case 6:
//买家
value = StringUtils.isEmpty(excel.getUserName()) ? "" : excel.getUserName();
break;
case 7:
//手机
value = StringUtils.isEmpty(excel.getPhone()) ? "" : excel.getPhone();
break;
case 8:
//发货地址
value = StringUtils.isEmpty(excel.getAddress()) ? "" : excel.getAddress();
break;
case 9:
//运费
value =excel.getFreight()!=null ? excel.getFreight()+"" :"" ;
break;
case 10:
//订单状态
value = StringUtils.isEmpty(excel.getStatus()) ? "" : findServiceTypeNew(excel.getStatus());
break;
case 11:
//付款状态
value = StringUtils.isEmpty(excel.getPayStatus()) ? "" : findServiceTypeNew2(excel.getPayStatus());
break;
default:
value = "";
break;
}
return value;
}
//判断订单的状态
private String findServiceTypeNew(Integer value) {
switch (value) {
case 0:
return "未付款";
case 1:
return "未发货";
case 2:
return "待收货";
case 3:
return "待评论";
case 4:
return "退货";
case 5:
return "已完成";
case 6:
return "订单失效";
case 7:
return "订单关闭";
case 8:
return "删除订单";
case 9:
return "拼团中";
case 10:
return "拼团失败";
case 11:
return "已退款";
default:
return "未知";
}
}
//判断订单的付款状态
private String findServiceTypeNew2(Integer value) {
switch (value) {
case 0:
return "未付";
case 1:
return "已付";
default:
return "没有数据";
}
}
使用postman测试
导出效果