POI: java技术,操作excel文档
hutool-excel:常用poi功能,简化封装成工具类
写出文档数据:
(1)导出数据报表
① 获得能够向excel表格中输出信息对象[流]
writer = ExcelUtil.getWriter("文件路径");
注释:excel表格文件标准后缀:*.xls、*.xlsx
② excel表格数据包含:
表头:指明当前列数据的含义
每行:多个单元格的数据;List<Object> | Map<字符串标题,Object>
表格:多行数据。List<Map<表头,Object数据>>
③ 将数据写出到Excel文档:writer.write(list);
④ 关闭流:writer.close();
(2)向输出流中写入数据
① 创建一个写出的工具:ExcelWriter ew = ExcelUtil.getWriter();
② 将list多行数据集合写入:writer.write(list);
③ flush,将数据写入到指定输出流中:writer.flush(outputStream);
④ 关闭流:writer.close();
(3)设置表格的sheet的名字
writer.renameSheet("xxx")
读入文档数据:
① 创建一个读入的工具:ExcelReader reader = ExcelUtil.getReader("文件路径");
② 读取里面的数据:List<Map<String,Object>> list = reader.readAll();
③ 关闭流:reader.close();
实例代码:
导出:准备:导入POI的jar以及hutool的jar
①方式一:(表格信息写到对应的文件路径)
ExcelUtil.getWriter("文件路径"); //直接写到文件里
②方式二:(表格信息写到特定的输出流里)
List<Person> list = new ArrayList<Person>();
persons.add(new Person("1001", "黄浩", 1, 18, "233456789", "郑州"));
persons.add(new Person("1002", "杨宁", 1, 18, "233456789", "郑州"));
persons.add(new Person("1003", "洪诗鹏", 1, 18, "233456789", "郑州"));
// 重要将数据转化为hutool-excel,能够直接写出的数据结构:List<Map<String,Object>>
// 创建一个存储多行数据的list
List<Map<String, Object>> persons = new ArrayList<Map<String, Object>>();
for (Person person : list) {
// 每个person信息,代表一行数据:Map<String,person的属性>
Map<String, Object> map = new LinkedHashMap<String, Object>();
map.put("编号", person.getId());
map.put("名字", person.getName());
map.put("年龄", person.getAge());
map.put("地址", person.getAddress());
persons.add(map); // 将当前行的数据,加入persons
}
ExcelWriter writer = ExcelUtil.getWriter("D:/person.xlsx");// ①创建写出数据到文档中的工具
writer.renameSheet("联系人信息表"); //设置sheet的名字
writer.write(persons); // ②将数据写出到文档导出工具中
writer.flush(输出流);//输出流:可以是文件输出流,也可以是控制器的响应流进行下载
writer.close(); // ③关闭流
导入:
① 创建一个读入的工具:ExcelReader reader = ExcelUtil.getReader("D:/person.xlsx");
② 读取里面的数据:List<Map<String, Object>> list = reader.readAll();
③ 关闭流:reader.close();