1.Controller
@SneakyThrows
@PostMapping("/daoExcel")
public void daoExcel(@RequestBody List<Entity> entityList, HttpServletResponse response, HttpServletRequest request) {
try {
entityService.getDaoExcel(entityList, response, request);
}catch (Exception e) {
e.printStackTrace();
}
}
2.Service
@SneakyThrows
void getDaoExcel(List<Entity> entityList, HttpServletResponse response, HttpServletRequest request) ;
3.Impl
@SneakyThrows
@Override
public void getList3(List<Entity> entity1List, HttpServletResponse response, HttpServletRequest request) {
//用于标记是否有输出数据
int outFlag=0;
//文件名
String fileName=null;
//参数
String remark=null;
int v_chk=0;
// try {
/**
* 勾选页面数据总数
*/
for (int i = 0; i <entity1List.size(); i++) {
Entity entity1=entity1List.get(i);
Date date = new Date();
SimpleDateFormat ft = new SimpleDateFormat("YYYYMMddHHmmss");//24小时制时间
String format = ft.format(date);
//创建文件夹
String MAINFILENAME = "C:/TEMP/模板_"+format+"/";
File file1 = new File(MAINFILENAME);
if (file1.mkdir()) {
System.out.println("创建文件目录:" + file1.getPath() + "成功!");
}
//写模板文件
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("模板_"+entity1List.get(i).getID());
//设置列宽度
sheet.setColumnWidth(0,8800);
sheet.setColumnWidth(1,4855);
sheet.setColumnWidth(2,4855);
sheet.setColumnWidth(3,2428);
//样式
CellStyle style = workbook.createCellStyle();
CellStyle style1 = workbook.createCellStyle();
CellStyle style2 = workbook.createCellStyle();//加格式线
//局中对其
style1.setAlignment(HorizontalAlignment.CENTER);//增加水平居中样式
style1.setVerticalAlignment(VerticalAlignment.CENTER);//增加垂直居中样式
//自动换行样式增加
style1.setWrapText(true);
//excle边框样式添加
style1.setBorderBottom(BorderStyle.THIN);//设置单元
style1.setBorderLeft(BorderStyle.THIN);
style1.setBorderRight(BorderStyle.THIN);
style1.setBorderTop(BorderStyle.THIN);
//excle边框样式添加
style2.setBorderBottom(BorderStyle.THIN);//设置单元
style2.setBorderLeft(BorderStyle.THIN);
style2.setBorderRight(BorderStyle.THIN);
style2.setBorderTop(BorderStyle.THIN);
/*⾏设置了字体后,excel中所有的⾏的字体样式都发⽣了改变 */
XSSFFont font = workbook.createFont();
font.setFontName("宋体");//字体
font.setFontHeight(22);//字体大小
font.setBold(true);//字体是否加粗
style.setFont(font);
XSSFFont font1 = workbook.createFont();
font1.setFontName("宋体");//字体
font1.setFontHeight(10);//字体大小
font1.setBold(true);//字体是否加粗
style1.setFont(font1);
//第一行 标题头部
XSSFRow zRow = sheet.createRow(0);
zRow.setHeight((short) 540);//设置行高
XSSFCell zCell = zRow.createCell(0);
zCell.setCellStyle(style);
//第二行
XSSFRow zRow1 = sheet.createRow(1);
zRow1.setHeight((short) 375);//设置行高
XSSFCell zCell1 = zRow1.createCell(0);//第2行第一个
XSSFCell zCell2 = zRow1.createCell(1);//第2行第二个
zCell1.setCellValue("ID编号:");
XSSFCell zCell3 = zRow1.createCell(8);//第2行第9个
XSSFCell zCell4 = zRow1.createCell(9);//第2行第10个
zCell3.setCellValue("时间:");
//第六行
XSSFRow aRow1 = sheet.createRow(5);
aRow1.setHeight((short) 480);//设置行高
XSSFCell aCell = aRow1.createCell(0);//第6行第1个
XSSFCell aCell1 = aRow1.createCell(1);//第6行第2个
XSSFCell aCell2 = aRow1.createCell(2);//第6行第3个
XSSFCell aCell3 = aRow1.createCell(3);//第6行第4个
aCell.setCellValue("名字1");
aCell.setCellStyle(style1);
aCell1.setCellValue("名字2");
aCell1.setCellStyle(style1);
aCell2.setCellValue("名字3");
aCell2.setCellStyle(style1);
aCell3.setCellValue("名字4");
aCell3.setCellStyle(style1);
//打印EXCEL
if (entity1.getID().indexOf('W')!=-1 || entity1.getID().indexOf('S')!=-1){
List<Entity2> list2 = entity1Mapper.getList2(entity1.getID());
for (int j = 0; j <list2.size() ; j++) {
Entity2 entity2 = list2.get(j);
//取首字母
String str= String.valueOf(entity2.getID().charAt(0));
if (str.equals("W") || str.equals("S")){
outFlag=1;
//文件名
if (fileName==null){
//文件名
fileName=MAINFILENAME+"模板_"+entity2.getID()+ ".xlsx";
//第一行 标题头部
zCell.setCellValue("模板标题");
//第二行
zCell2.setCellValue(entity2.getID());
zCell4.setCellValue(format);
}
//第七行到N行
XSSFRow contentRow = sheet.createRow(6+j);//创建一行
contentRow.setHeight((short) 375);//设置行高
XSSFCell contentCell = contentRow.createCell(0);//第6+j行第1个
XSSFCell contentCell1 = contentRow.createCell(1);//第6+j行第2个
XSSFCell contentCell2 = contentRow.createCell(2);//第6+j行第3个
XSSFCell contentCell3 = contentRow.createCell(3);//第6+j行第4个
contentCell.setCellValue(entity2.getName1());
contentCell.setCellStyle(style2);
contentCell1.setCellValue(entity2.getName2());
contentCell1.setCellStyle(style2);
contentCell2.setCellValue(entity2.getName3());
contentCell2.setCellStyle(style2);
contentCell3.setCellValue(entity2.getName4());
contentCell3.setCellStyle(style2);
}
}
if(outFlag==1){
response.setCharacterEncoding("UTF-8");
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
workbook.write(response.getOutputStream());
fileName=null;
outFlag=0;
}
}// end
}
}
效果: