java实现excel导入 java批量导入excel数据( 二 )



2.2.2、动态参数化生成文件动态参数化生成文件,这种方式小编使用的比较多,基于它,我们可以封装一个公共的导出工具类,在后面会单独介绍给大家,示例代码如下:
public static void main(String[] args) throws FileNotFoundException {//定义表头List<List<String>> headList = new ArrayList<>();headList.add(Lists.newArrayList("姓名"));headList.add(Lists.newArrayList("年龄"));headList.add(Lists.newArrayList("操作时间"));//定义数据体List<List<Object>> dataList = new ArrayList<>();for (int i = 0; i < 10; i++) {List<Object> data = https://www.jinnalai.com/fenxiang/new ArrayList<>();data.add("张三" + i);data.add(20 + i);data.add(new Date(System.currentTimeMillis() + i));dataList.add(data);}//定义文件输出位置FileOutputStream outputStream = new FileOutputStream(new File("/Users/panzhi/Documents/easyexcel-export-user2.xlsx"));EasyExcel.write(outputStream).head(headList).sheet("用户信息").doWrite(dataList);}运行程序,打开文件内容,结果与上面一致!

java实现excel导入 java批量导入excel数据


2.2.3、复杂表头的生成很多时候我们需要导出的文件,表头比较复杂,例如,我们想导出如下图这样一个复杂表头,应该如何实现呢?

java实现excel导入 java批量导入excel数据


如果你是使用在实体类上添加注解方式生成文件,那么可以通过如下方式来实现:
public class UserEntity {@ExcelProperty(value = "https://www.jinnalai.com/fenxiang/班级")private String className;@ExcelProperty({"学生信息", "姓名"})private String name;@ExcelProperty({"学生信息", "年龄"})private int age;@DateTimeFormat("yyyy-MM-dd HH:mm:ss")@ExcelProperty({"学生信息", "入学时间"})private Date time;//set、get...}其中{“学生信息”, “姓名”}这种表达式,表示在当前列,插入多行数据,第一行插入的是学生信息名称,第二行,插入的是姓名名称,因此形成多级表头!
如果你是使用的动态参数化生成文件,操作也同样类似,示例代码如下:
public static void main(String[] args) throws FileNotFoundException {//定义多级表头List<List<String>> headList = new ArrayList<>();headList.add(Lists.newArrayList("班级"));headList.add(Lists.newArrayList("学生信息", "姓名"));headList.add(Lists.newArrayList("学生信息","年龄"));headList.add(Lists.newArrayList("学生信息","入学时间"));//定义数据体List<List<Object>> dataList = new ArrayList<>();for (int i = 0; i < 10; i++) {List<Object> data = https://www.jinnalai.com/fenxiang/new ArrayList<>();data.add("一年级~1班");data.add("张三" + i);data.add(20 + i);data.add(new Date(System.currentTimeMillis() + i));dataList.add(data);}//定义文件输出位置FileOutputStream outputStream = new FileOutputStream(new File("/Users/panzhi/Documents/easyexcel-export-user3.xlsx"));EasyExcel.write(outputStream).head(headList).sheet("用户信息").doWrite(dataList);}其中Lists.newArrayList(“学生信息”, “姓名”)表达的意思跟上面一样,在当前列下插入多行,类似于:
List<String> list = new ArrayList<>();list.add("学生信息");list.add("姓名");Lists.newArrayList编程来自于guava工具包!
2.2.4、自定义样式在实际使用过程中,我们可能还需要针对文件做一下样式自定义,例如你想把表头设置为红色,内容设置为绿色,列宽、行宽都加大,应该如何实现呢?

java实现excel导入 java批量导入excel数据


操作也很简单,编写一个自定义样式类,然后在写入的时候注入进去 。

推荐阅读