环境 idea
核心依赖
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-spring-boot-starter</artifactId>
<version>4.0.0</version>
</dependency>
excl导入导出
通过实体+注解的方式导出模板(结果)
@GetMapping("/down")
public void down(HttpServletResponse httpServletResponse) {
String fileName = "导出模板.xls";
Class clazz = AnnotationUtils.changeAnnotation(Person.class, new ArrayList<>());
ExcelUtiles.exportExcel(new ArrayList<>(), "标题", "sheetName", clazz, LocalDateTime.now() + fileName, httpServletResponse);
}
修改注解
public static <T> Class changeAnnotation(Class<T> clazz, List<String> hideList) {
Field[] fields = clazz.getDeclaredFields();
if (fields == null || fields.length < 1) {
return clazz;
}
for (Field field : fields) {
Excel excel = field.getAnnotation(Excel.class);
InvocationHandler invocationHandler = Proxy.getInvocationHandler(excel);
Field declaredField = null;
try {
declaredField = invocationHandler.getClass().getDeclaredField("memberValues");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
// 因为这个字段事 private final 修饰,所以要打开权限
declaredField.setAccessible(true);
// 获取 memberValues
Map memberValues = null;
try {
memberValues = (Map) declaredField.get(invocationHandler);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
if (hideList.indexOf(excel.name()) != -1) {
// 修改 value 属性值
memberValues.put("isColumnHidden", true);
System.out.println(excel.isColumnHidden());
}else {
memberValues.put("isColumnHidden", false);
}
}
return clazz;
}
通过修改注解属性选怎动态导入导出行
导入
/**
* easypoi 导入
*
* @param multipartFile
* @return
*/
@PostMapping("/imp")
public String import1(@RequestBody MultipartFile multipartFile) {
List<Person> people = ExcelUtiles.importExcel(multipartFile, 1, 1, Person.class);
System.out.println(people.size());
return people.toString();
}
word模板导出
插入链接与图片
链接: git地址 demo
链接: git地址 test
图片: