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();