public void poiTest() throws Exception {
//创建Excel工具对象 并 创建一张Excel表
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("guru");
List<String> list = Arrays.asList("上师编号", "上师名字", "上师法号", "上师头像");
HSSFRow row0 = sheet.createRow(0);
for (int i = 0; i <list.size() ; i++) {
HSSFCell cell = row0.createCell(i);
cell.setCellValue(list.get(i));
}
//获取数据集合
List<Guru> gurus = guruMapper.selectList(null);
//反射获取属性数组
Guru guru = new Guru();
Class<? extends Guru> guruClass = guru.getClass();
Field[] declaredFields = guruClass.getDeclaredFields();
for (int i = 0; i <gurus.size() ; i++) {
HSSFRow row = sheet.createRow(i+1);
for (int j = 0; j <declaredFields.length ; j++) {
//拼接get方法并调用
String name = declaredFields[j].getName();
String methodName = "get"+name.substring(0, 1).toUpperCase()+name.substring(1);
Method declaredMethod = guruClass.getDeclaredMethod(methodName, null);
Object invoke = declaredMethod.invoke(gurus.get(i), null);
HSSFCell cell = row.createCell(j);
cell.setCellValue(invoke.toString());
}
}
//写出到本地
File file = new File("E://guru.xls");
workbook.write(new FileOutputStream(file));
//设置Response头文件 并解决乱码问题
String fileName = "guru.xls";
response.setCharacterEncoding("UTF-8");
response.setContentType("application/octet-stream;charset=UTF-8");
fileName = new String(fileName.getBytes("UTF-8"), "iso-8859-1");
response.setHeader("Content-Disposition", "attachment;filename="+ fileName);
//获取流
OutputStream os = response.getOutputStream();
//读取并写出到浏览器
InputStream is = new FileInputStream(file);
byte[] a = new byte[10000];
int read = 0;
if(read != -1){
read = is.read(a);
os.write(a,0,read);
}
//释放资源
os.flush();
is.close();
os.close();
}
SpringBoot-利用反射原理下载Excel
最新推荐文章于 2023-10-24 16:33:48 发布