自定义实现Poi工具类
作者:互联网
添加依赖
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version> </dependency>
了解API
HSSF:Excel97-2003版本,扩展名为.xls。一个sheet最大行数65536,最大列数256。 XSSF:Excel2007版本开始,扩展名为.xlsx。一个sheet最大行数1048576,最大列数16384。 SXSSF:是在XSSF基础上,POI3.8版本开始提供的支持低内存占用的操作方式,扩展名为.xlsx。 HSSF:HSSFWorkbook、HSSFSheet、HSSFRow、HSSFCell [Excel97-2003版本] XSSF:XSSFWorkbook、XSSFSheet、XSSFRow、XSSFCell [Excel2007版本开始] SXSSF:SXSSFWorkbook、Sheet、Row、Cell [内存优化] 以XSSF为例: XSSFWorkbook 代表一个excel文档对象 XSSFSheet 代表一个excel中的工作表 XSSFRow 代表一个工作表中的一行 XSSFCell 代表一行中的一个单元格
自定义导出工具类
创建注解类
@Target(ElementType.FIELD) //ElementType.FIELD 当前注解可以添加到类中的属性上 @Retention(RetentionPolicy.RUNTIME) public @interface MyExcel { String value(); }
实体类
public class User { @MyExcel(value = "用户编号") private int id; @MyExcel(value = "姓名") private String name; @MyExcel(value = "成绩") private double score;
工具类
public static void export2(Class clazz,List list,String sheetName,String path) throws Exception { XSSFWorkbook workbook = new XSSFWorkbook(); XSSFSheet sheet = workbook.createSheet(sheetName); XSSFRow row = sheet.createRow(0); Field[] fields = clazz.getDeclaredFields(); int x = 0; for (Field field:fields){ //拿到属性上的注解 MyExcel annotation = field.getAnnotation(MyExcel.class); //判断是否有注解 if(annotation!=null){ //有注解则创建表格并填充内容 row.createCell(x).setCellValue(annotation.value()); x++; } } for (int i = 0; i < list.size(); i++) { XSSFRow row1 = sheet.createRow(i + 1); Object o = list.get(i); //获取类对象 int y = 0; for (Field field:fields) { //判断属性上是否有注解 MyExcel annotation = field.getAnnotation(MyExcel.class); if(annotation!=null){ //获取属性名 String name = field.getName(); //通过属性名拿到get方法 String methodName ="get"+ name.substring(0, 1).toUpperCase() + name.substring(1); Method method = clazz.getMethod(methodName); //通过方法获取属性 Object invoke = method.invoke(o); row1.createCell(y).setCellValue(invoke.toString()); y++; } } } //输出到指定路径 workbook.write(new FileOutputStream(path)); }
标签:sheet,String,自定义,MyExcel,value,field,Poi,工具,annotation 来源: https://www.cnblogs.com/huahualove/p/13881470.html