SSM+POI上传读取导出excel--------导出(一)
程序员文章站
2022-04-30 18:28:05
...
其实会了上传之后,大致的导出功能也能实现了,只是一些细节问题比较麻烦
先上传一份粗糙点的,只是实现功能,导出的xlsx版本
jsp
<button id="btn2">导出excel</button>
$("#btn2").click(function(){
$.ajax({
type:'post',
url:'exportExcel',
success:function(data){
if(data.code==100){
alert("100");
}else{
alert("200");
}
},
error:function(){
alert("error");
}
})
});
controller
@RequestMapping(value="/exportExcel",method=RequestMethod.POST)
@ResponseBody
public Msg exportExcel() {
String path="E:\\download\\downExcel.xlsx";
FileOutputStream out=null;
try {
out=new FileOutputStream(path);
} catch (FileNotFoundException e) {
e.printStackTrace();
return Msg.fail().add("error", "文件夹不存在");
}
List list=new ArrayList();
list=userService.findList(null);
ExcelUtil.createExcel(list, out);
return Msg.success();
}
ExcelUtil.createExcel
虽然只是实现基本功能,但是这里的代码两个循环有一点重复了,等后续版本优化
list就是数据库查询出的需要导出的数据,out输出流
public static void createExcel(List list,OutputStream out) {
XSSFWorkbook workbook=new XSSFWorkbook();
Sheet sheet=workbook.createSheet();
//先设置excel的列名
Row row0=sheet.createRow(0);
Object object0=list.get(0);
for(Field field:object0.getClass().getDeclaredFields()) {
field.setAccessible(true);
String propertyName=field.getAnnotation(Excel.class).name();
System.out.print("设置列名++++");
System.out.print(propertyName+"===");
int columnNum=field.getAnnotation(Excel.class).columnIndex();
if(columnNum==-1)
continue;
row0.createCell(columnNum).setCellValue(propertyName);
}
System.out.println("列名设置完毕,开始设置cell值");
int rowNum=1;
for(Object o:list) {
Row row=sheet.createRow(rowNum);
for(Field field:object0.getClass().getDeclaredFields()) {
field.setAccessible(true);
int columnNum=field.getAnnotation(Excel.class).columnIndex();
if(columnNum==-1)
continue;
try {
if(field.get(o)==null)
continue;
row.createCell(columnNum).setCellValue(field.get(o).toString());
} catch (Exception e) {
e.printStackTrace();
}
}
rowNum++;
}
try {
workbook.write(out);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
导出效果,cell空着是因为数据库里本来就是空的
上一篇: VSCode解决乱码
下一篇: 字符串的最大公因子