目錄
1、將List<List<String>>中的內容生成到excel表格中,無表頭
2、將List<List<String>>中的內容生成到excel表格中,有表頭
3、將List<Object>的內容生成到表格中
引入Maven依賴
<dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>1.1.2-beta5</version> </dependency>
1、將List<List<String>>中的內容生成到excel表格中,無表頭
package com.harara.easyexcel.write; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.metadata.Sheet;import com.alibaba.excel.support.ExcelTypeEnum;import java.io.FileOutputStream;import java.io.OutputStream; import java.util.ArrayList;import java.util.List; /** * * 通過List、Object生成excel * @author : harara * @version : 2.0 * @date : 2020/6/9 13:49 */ public class ExcelWriteTest { /** * 每行數據是List<String> * 無表頭 */ public void writeWithoutHead(){ List<List<String>> data = getExcelData(); OutputStream out; ExcelWriter excelWriter; try { out = new FileOutputStream("withoutHead.xlsx"); excelWriter = new ExcelWriter(out, ExcelTypeEnum.XLSX,false); Sheet sheet1 = new Sheet(1,0); sheet1.setSheetName("sheet1"); excelWriter.write0(data,sheet1); excelWriter.finish(); out.flush(); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { ExcelWriteTest excelWriteTest = new ExcelWriteTest(); excelWriteTest.writeWithoutHead(); System.out.println("finish"); } private List<List<String>> getExcelData(){ List<List<String>> data = new ArrayList<List<String>>(); for(int i=0;i<=10;i++){ List<String> line = new ArrayList<String>(); line.add("第"+i+"行,第1列內容"); line.add("第"+i+"行,第2列內容"); line.add("第"+i+"行,第3列內容"); data.add(line); } return data; } }
生成效果
2、將List<List<String>>的內容生成到excel表格中,有表頭
package com.harara.easyexcel.write; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.metadata.Sheet; import com.alibaba.excel.metadata.Table; import com.alibaba.excel.support.ExcelTypeEnum;import java.io.FileOutputStream;import java.io.OutputStream; import java.util.ArrayList;import java.util.List; /** * * 通過List、Object生成excel * @author : harara * @version : 2.0 * @date : 2020/6/9 13:49 */ public class ExcelWriteTest { /** * 每行數據是List<String> * 有表頭 */ public void writeWithHead(){ List<List<String>> data = getExcelData(); List<List<String>> head = getExcelHead(); OutputStream out; ExcelWriter excelWriter; try{ out = new FileOutputStream("withHead.xlsx"); excelWriter = new ExcelWriter(out, ExcelTypeEnum.XLSX,true); Table table = new Table(0); table.setHead(head); excelWriter.write0(data,new Sheet(0),table); excelWriter.finish(); out.flush(); }catch (Exception e){ e.printStackTrace(); } } public static void main(String[] args) { ExcelWriteTest excelWriteTest = new ExcelWriteTest(); excelWriteTest.writeWithHead(); System.out.println("finish"); } private List<List<String>> getExcelHead(){ List<List<String>> head = new ArrayList<List<String>>(); List<String> column1 = new ArrayList<String>(); column1.add("第一列"); List<String> column2 = new ArrayList<String>(); column2.add("第二列"); List<String> column3 = new ArrayList<String>(); column3.add("第三列"); head.add(column1); head.add(column2); head.add(column3); return head; } private List<List<String>> getExcelData(){ List<List<String>> data = new ArrayList<List<String>>(); for(int i=0;i<=10;i++){ List<String> line = new ArrayList<String>(); line.add("第"+i+"行,第1列內容"); line.add("第"+i+"行,第2列內容"); line.add("第"+i+"行,第3列內容"); data.add(line); } return data; } }
生成效果
3、將List<Object>的內容生成到表格中
package com.harara.easyexcel.write; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.metadata.Sheet;import com.alibaba.excel.support.ExcelTypeEnum; import com.harara.model.User; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * * 通過List、Object生成excel * @author : harara * @version : 2.0 * @date : 2020/6/9 13:49 */ public class ExcelWriteTest { /** * 每行數據是Object */ public void writeExcelByModel(){ List<User> users = getExcelModelData(); OutputStream outputStream = null; ExcelWriter excelWriter; try{ outputStream = new FileOutputStream("excelByModel.xlsx"); excelWriter = new ExcelWriter(outputStream,ExcelTypeEnum.XLSX,true); //sheet構造函數中指定實體對象為User.class Sheet sheet = new Sheet(1,0, users.get(0).getClass()); excelWriter.write(users,sheet); excelWriter.finish(); outputStream.flush(); }catch (Exception e){ e.printStackTrace(); }finally { if(outputStream != null){ try { outputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } } public static void main(String[] args) { ExcelWriteTest excelWriteTest = new ExcelWriteTest(); excelWriteTest.writeExcelByModel(); System.out.println("finish"); } /** * 獲取實體對象數據 * @return */ private List<User> getExcelModelData(){ List<User> users = new ArrayList<User>(); for(int i=0; i <= 10;i++){ User user = new User(); user.setName("name" + i); user.setAge("age" + i); user.setEmail("email" + i); user.setAddress("address" + i); user.setSax("sax" + i); user.setHeigh("heigh" + i); user.setLast("last" + i); user.setBitthday(new Date()); users.add(user); } return users; } }
實體對象
繼承BaseRowModel,字段上添加@ExcelProperty注解表示該字段要寫入到excel中,屬性value表示表頭名,index表示列的順序排序
package com.harara.model; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.metadata.BaseRowModel; import lombok.Data; import java.util.Date; /** * 要繼承BaseRowModel * @author : harara * @version : 2.0 * @date : 2020/6/9 15:32 * */ @Data public class User extends BaseRowModel{ @ExcelProperty(value = "姓名", index = 0) private String name; @ExcelProperty(value = "年齡", index = 1) private String age; @ExcelProperty(value = "郵箱", index = 2) private String email; @ExcelProperty(value = "地址", index = 3) private String address; @ExcelProperty(value = "性別", index = 4) private String sax; @ExcelProperty(value = "高度", index = 5) private String heigh; @ExcelProperty(value = "備注", index = 6) private String last; @ExcelProperty(value = "生日",index = 7) private Date bitthday; }
生成效果
參考地址
alibaba/easyexcel 框架使用 https://www.jianshu.com/p/3a64ade57bf2
JAVA使用easyexcel操作Excel https://blog.csdn.net/jianggujin/article/details/80200400