四川遂寧做網(wǎng)站的公司武漢網(wǎng)站建設(shè)推廣公司
通過(guò)hutool工具類(lèi),對(duì)于excel的操作變得非常簡(jiǎn)單,上篇介紹的是excel的上傳,對(duì)excel的操作,核心代碼只有一行。本篇的excel的下載,核心數(shù)據(jù)也不超過(guò)兩行,簡(jiǎn)潔方便,特別適合當(dāng)下的低代碼操作。
下載excel,有兩種方式,一種將生成的excel下載到指定路徑,一種是在web頁(yè)面中直接下載到默認(rèn)的download路徑。
第一種:
ExcelWriter writer = ExcelUtil.getWriter("D:/myfile/" + new String("班級(jí)人員表.".getBytes(StandardCharsets.UTF_8)));
第二種:
ExcelWriter writer = ExcelUtil.getWriter();
write.flush(outputStream, isCloseOut);
使用步驟及代碼示例如下:
引入jar包
<dependency><groupId>cn.hutool</groupId><artifactId>hutool-poi</artifactId><version>5.7.16</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.2</version></dependency>
第一種指定路徑下載的方式代碼實(shí)現(xiàn)如下:
public class CreateExcelDemo{public void createExcel() {/*** 第一部分,組裝數(shù)據(jù)*/// classList 就是輸入到excel的數(shù)據(jù)集合List<Map<String, String>> classList = new ArrayList<>();// map的key 是表頭,value是表頭對(duì)應(yīng)的值Map<String, String> map = new LinkedHashMap<>();map.put("班級(jí)名稱", "計(jì)算機(jī)一班");// 第一列map.put("班級(jí)人數(shù)", "45");// 第二列map.put("班主任", "王老師");classList.add(map);/*** 第二部分,指定路徑和excel文件名稱,將數(shù)據(jù)放入excel*/// 設(shè)置UTF-8,是為了防止在Linux中,中文名稱出現(xiàn)亂碼ExcelWriter writer = ExcelUtil.getWriter("D:/myfile/" + new String("班級(jí)人員表.xlsx".getBytes(StandardCharsets.UTF_8))).renameSheet("班級(jí)名稱") //設(shè)置sheet名稱,默認(rèn)是第一個(gè)sheet .setColumnWidth(-1, 20) // 設(shè)置列寬度為20,-1表示針對(duì)所有列.write(classList, true); // 將List數(shù)據(jù)寫(xiě)入到excel表,true表示設(shè)置標(biāo)題行writer.close(); // 寫(xiě)完記得關(guān)閉}
}
結(jié)果如下:
第二種是在web頁(yè)面中下載,即直接通過(guò)瀏覽器下載,代碼如下:
public class CreateExcelDemo {public static void createExcel(HttpServletResponse response) {/*** 第一部分,組裝數(shù)據(jù)*/// classList 就是輸入到excel的數(shù)據(jù)集合List<Map<String, String>> classList = new ArrayList<>();// map的key 是表頭,value是表頭對(duì)應(yīng)的值Map<String, String> map = new LinkedHashMap<>();map.put("班級(jí)名稱", "計(jì)算機(jī)一班");// 第一列map.put("班級(jí)人數(shù)", "45");// 第二列map.put("班主任", "王老師");classList.add(map);/*** 第二部分,通過(guò)流輸出到文件*/OutputStream out = null;try (ExcelWriter writer = ExcelUtil.getWriter()) {writer.write(classList, true);// 寫(xiě)入數(shù)據(jù)response.setContentType("application/vnd.ms-excel;charset=utf-8");response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("班級(jí)人員表.xlsx", "UTF-8"));out = response.getOutputStream();// 獲取流writer.flush(out, true); // 將數(shù)據(jù)流輸出到文件} catch (IOException e) {e.printStackTrace();}IoUtil.close(out);// 流的操作要關(guān)閉}
結(jié)果如下:
excel的操作是很方便的,其他設(shè)置可以查看源碼,源碼都是中文注釋,很清晰。
excel表上傳請(qǐng)看上一篇:java hutool工具實(shí)現(xiàn)excel的上傳 支持office03和07