springboot實(shí)現(xiàn)excel表格導(dǎo)出幾種常見方法
簡(jiǎn)介
在Spring Boot中,實(shí)現(xiàn)Excel表格導(dǎo)出的方式有很多種,以下是幾種常見的方法:
- 使用Apache POI:Apache POI是一個(gè)開源的Java API,用于處理Microsoft Office文檔格式,包括Excel電子表格。在Spring Boot中,可以使用Apache POI創(chuàng)建Excel文檔,并將其寫入HTTP響應(yīng)中,以實(shí)現(xiàn)Excel表格的導(dǎo)出。
- 使用EasyPOI:EasyPOI是一個(gè)開源的Java API,用于處理Excel電子表格。它基于Apache POI和Jxls開發(fā),提供了更加簡(jiǎn)單易用的API,可以幫助我們快速實(shí)現(xiàn)Excel表格的導(dǎo)出。
- 使用Jxls:Jxls是一個(gè)用于生成Excel報(bào)表的Java庫(kù)。在Spring Boot中,可以使用Jxls創(chuàng)建Excel文檔,并將其寫入HTTP響應(yīng)中,以實(shí)現(xiàn)Excel表格的導(dǎo)出。
- 使用第三方庫(kù):還有其他一些第三方的Java庫(kù)可以用于生成Excel電子表格,例如Aspose.Cells、JExcelApi等,它們也可以在Spring Boot中使用,實(shí)現(xiàn)Excel表格的導(dǎo)出。
需要注意的是,無論使用哪種方法,都需要將Excel文檔寫入HTTP響應(yīng)中,并設(shè)置正確的Content-Type和Content-Disposition頭信息,以確保瀏覽器能夠正確地識(shí)別Excel文檔并下載它。
一、Apache POI
- maven依賴坐標(biāo)
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.2</version> </dependency>
@RestController public class ExcelController { @GetMapping("/export") public void exportExcel(HttpServletResponse response) throws Exception { // 創(chuàng)建Excel文檔 XSSFWorkbook workbook = new XSSFWorkbook(); XSSFSheet sheet = workbook.createSheet("Sheet1"); // 創(chuàng)建表頭 XSSFRow header = sheet.createRow(0); header.createCell(0).setCellValue("姓名"); header.createCell(1).setCellValue("年齡"); header.createCell(2).setCellValue("性別"); // 填充數(shù)據(jù) List<User> users = getUserList(); int rowIndex = 1; for (User user : users) { XSSFRow row = sheet.createRow(rowIndex++); row.createCell(0).setCellValue(user.getName()); row.createCell(1).setCellValue(user.getAge()); row.createCell(2).setCellValue(user.getGender()); } // 設(shè)置響應(yīng)頭信息 response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-Disposition", "attachment; filename=users.xlsx"); // 將Excel文檔寫入響應(yīng)流中 ServletOutputStream outputStream = response.getOutputStream(); workbook.write(outputStream); outputStream.flush(); outputStream.close(); } // 模擬獲取用戶數(shù)據(jù) private List<User> getUserList() { List<User> users = new ArrayList<>(); users.add(new User("張三", 25, "男")); users.add(new User("李四", 30, "女")); users.add(new User("王五", 28, "男")); return users; } // 用戶實(shí)體類 private static class User { private String name; private int age; private String gender; public User(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } } }
二、Easy POI
- maven依賴坐標(biāo)
<dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-base</artifactId> <version>4.2.0</version> </dependency> <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-web</artifactId> <version>4.2.0</version> </dependency>
@RestController public class ExcelController { @GetMapping("/export") public void exportExcel(HttpServletResponse response) throws Exception { // 創(chuàng)建Excel文檔 Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("用戶列表", "用戶信息"), User.class, getUserList()); // 設(shè)置響應(yīng)頭信息 response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-Disposition", "attachment; filename=users.xlsx"); // 將Excel文檔寫入響應(yīng)流中 ServletOutputStream outputStream = response.getOutputStream(); workbook.write(outputStream); outputStream.flush(); outputStream.close(); } // 模擬獲取用戶數(shù)據(jù) private List<User> getUserList() { List<User> users = new ArrayList<>(); users.add(new User("張三", 25, "男")); users.add(new User("李四", 30, "女")); users.add(new User("王五", 28, "男")); return users; } // 用戶實(shí)體類 private static class User { @Excel(name = "姓名", orderNum = "0") private String name; @Excel(name = "年齡", orderNum = "1") private int age; @Excel(name = "性別", orderNum = "2") private String gender; public User(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } } }
三、Jxls
- maven依賴坐標(biāo)
<dependency> <groupId>org.jxls</groupId> <artifactId>jxls</artifactId> <version>2.14.0</version> </dependency> <dependency> <groupId>org.jxls</groupId> <artifactId>jxls-poi</artifactId> <version>2.14.0</version> </dependency>
@RestController public class ExcelController { @GetMapping("/export") public void exportExcel(HttpServletResponse response) throws Exception { // 加載Excel模板 InputStream inputStream = getClass().getResourceAsStream("/templates/user_template.xlsx"); Workbook workbook = WorkbookFactory.create(inputStream); // 填充數(shù)據(jù) List<User> users = getUserList(); Map<String, Object> model = new HashMap<>(); model.put("users", users); JxlsHelper.getInstance().processTemplate(model, workbook.getSheetAt(0)); // 設(shè)置響應(yīng)頭信息 response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-Disposition", "attachment; filename=users.xlsx"); // 將Excel文檔寫入響應(yīng)流中 ServletOutputStream outputStream = response.getOutputStream(); workbook.write(outputStream); outputStream.flush(); outputStream.close(); } // 模擬獲取用戶數(shù)據(jù) private List<User> getUserList() { List<User> users = new ArrayList<>(); users.add(new User("張三", 25, "男")); users.add(new User("李四", 30, "女")); users.add(new User("王五", 28, "男")); return users; } // 用戶實(shí)體類 private static class User { private String name; private int age; private String gender; public User(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } } }
總結(jié)
到此這篇關(guān)于springboot實(shí)現(xiàn)excel表格導(dǎo)出幾種常見方法的文章就介紹到這了,更多相關(guān)springboot excel表格導(dǎo)出內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java基礎(chǔ)教程之獲取操作系統(tǒng)及瀏覽器信息
最近在開發(fā)中需要從request中獲取操作系統(tǒng),瀏覽器及瀏覽器版本信息,所以下面這篇文章主要給的大家介紹了關(guān)于Java基礎(chǔ)教程之獲取操作系統(tǒng)及瀏覽器信息的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-10-10Java 使用 HttpClient 發(fā)送 GET請(qǐng)求和 POST請(qǐng)求
本文主要介紹了Java 使用 HttpClient 發(fā)送 GET請(qǐng)求和 POST請(qǐng)求,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08@RefreshScope 自動(dòng)刷新配置文件的實(shí)例講解
efreshScope(org.springframework.cloud.context.scope.refresh)是spring cloud提供的一種特殊的scope實(shí)現(xiàn),用來實(shí)現(xiàn)配置、實(shí)例熱加載,這篇文章主要介紹了@RefreshScope 自動(dòng)刷新配置文件,需要的朋友可以參考下2022-11-11spring 使用RabbitMQ進(jìn)行消息傳遞的示例代碼
這篇文章主要介紹了spring 使用RabbitMQ進(jìn)行消息傳遞的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-12-12關(guān)于Java的HashMap多線程并發(fā)問題分析
HashMap是采用鏈表解決Hash沖突,因?yàn)槭擎湵斫Y(jié)構(gòu),那么就很容易形成閉合的鏈路,這樣在循環(huán)的時(shí)候只要有線程對(duì)這個(gè)HashMap進(jìn)行g(shù)et操作就會(huì)產(chǎn)生死循環(huán),本文針對(duì)這個(gè)問題進(jìn)行分析,需要的朋友可以參考下2023-05-05