欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springboot實(shí)現(xiàn)excel表格導(dǎo)出幾種常見方法

 更新時(shí)間:2023年11月29日 14:42:10   作者:就叫飛六吧  
在日常的開發(fā)中避免不了操作Excel,下面這篇文章主要給大家介紹了關(guān)于springboot實(shí)現(xiàn)excel表格導(dǎo)出的幾種常見方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

簡介

在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ā),提供了更加簡單易用的API,可以幫助我們快速實(shí)現(xiàn)Excel表格的導(dǎo)出。
  • 使用Jxls:Jxls是一個(gè)用于生成Excel報(bào)表的Java庫。在Spring Boot中,可以使用Jxls創(chuàng)建Excel文檔,并將其寫入HTTP響應(yīng)中,以實(shí)現(xiàn)Excel表格的導(dǎo)出。
  • 使用第三方庫:還有其他一些第三方的Java庫可以用于生成Excel電子表格,例如Aspose.Cells、JExcelApi等,它們也可以在Spring Boot中使用,實(shí)現(xiàn)Excel表格的導(dǎo)出。

需要注意的是,無論使用哪種方法,都需要將Excel文檔寫入HTTP響應(yīng)中,并設(shè)置正確的Content-Type和Content-Disposition頭信息,以確保瀏覽器能夠正確地識別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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中Lambda表達(dá)式基礎(chǔ)及使用

    Java中Lambda表達(dá)式基礎(chǔ)及使用

    這篇文章主要介紹了Lambda 是JDK 8 的重要新特性。它允許把函數(shù)作為一個(gè)方法的參數(shù)(函數(shù)作為參數(shù)傳遞進(jìn)方法中),使用 Lambda 表達(dá)式可以使代碼變的更加簡潔緊湊,使Java代碼更加優(yōu)雅,感興趣的小伙伴一起來學(xué)習(xí)吧
    2021-08-08
  • Spring整合Springmvc的相關(guān)介紹

    Spring整合Springmvc的相關(guān)介紹

    今天小編就為大家分享一篇關(guān)于Spring整合Springmvc的相關(guān)介紹,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • SpringSecurity在分布式環(huán)境下的使用流程分析

    SpringSecurity在分布式環(huán)境下的使用流程分析

    文章介紹了Spring?Security在分布式環(huán)境下的使用,包括單點(diǎn)登錄(SSO)的概念、流程圖以及JWT(JSON?Web?Token)的生成和校驗(yàn),通過使用JWT和RSA非對稱加密,可以實(shí)現(xiàn)安全的分布式認(rèn)證,感興趣的朋友一起看看吧
    2025-02-02
  • Java8函數(shù)式編程應(yīng)用小結(jié)

    Java8函數(shù)式編程應(yīng)用小結(jié)

    Java8非常重要的就是引入了函數(shù)式編程的思想,使得這門經(jīng)典的面向?qū)ο笳Z言有了函數(shù)式的編程方式,彌補(bǔ)了很大程度上的不足,函數(shù)式思想在處理復(fù)雜問題上有著更為令人稱贊的特性,本文給大家介紹Java8函數(shù)式編程應(yīng)用小結(jié),感興趣的朋友一起看看吧
    2023-12-12
  • Java基礎(chǔ)篇之分布式版本控制工具Git

    Java基礎(chǔ)篇之分布式版本控制工具Git

    Git是一個(gè)開源的分布式版本控制系統(tǒng),可以有效、高速地處理從很小到非常大的項(xiàng)目版本管理。 也是Linus Torvalds為了幫助管理Linux內(nèi)核開發(fā)而開發(fā)的一個(gè)開放源碼的版本控制軟件
    2021-10-10
  • Java實(shí)現(xiàn)Fast DFS、服務(wù)器、OSS上傳功能

    Java實(shí)現(xiàn)Fast DFS、服務(wù)器、OSS上傳功能

    這篇文章主要介紹了Java實(shí)現(xiàn)Fast DFS、服務(wù)器、OSS上傳功能,在實(shí)際的業(yè)務(wù)中,可以根據(jù)客戶的需求設(shè)置不同的文件上傳需求,支持普通服務(wù)器上傳+分布式上傳(Fast DFS)+云服務(wù)上傳OSS(OSS),需要的朋友可以參考下
    2024-04-04
  • Spring多定時(shí)任務(wù)@Scheduled執(zhí)行阻塞問題解決

    Spring多定時(shí)任務(wù)@Scheduled執(zhí)行阻塞問題解決

    這篇文章主要介紹了Spring多定時(shí)任務(wù)@Scheduled執(zhí)行阻塞問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • SpringBootAdmin+actuator實(shí)現(xiàn)服務(wù)監(jiān)控

    SpringBootAdmin+actuator實(shí)現(xiàn)服務(wù)監(jiān)控

    這篇文章主要為大家詳細(xì)介紹了SpringBootAdmin+actuator實(shí)現(xiàn)服務(wù)監(jiān)控,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • SpringBoot集成echarts實(shí)現(xiàn)k線圖功能

    SpringBoot集成echarts實(shí)現(xiàn)k線圖功能

    ECharts是一款基于JavaScript的數(shù)據(jù)可視化圖表庫,提供直觀,生動(dòng),可交互,可個(gè)性化定制的數(shù)據(jù)可視化圖表,本文給大家介紹了SpringBoot集成echarts實(shí)現(xiàn)k線圖功能,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下
    2024-07-07
  • JAVA后端學(xué)習(xí)精華之網(wǎng)絡(luò)通信項(xiàng)目進(jìn)階

    JAVA后端學(xué)習(xí)精華之網(wǎng)絡(luò)通信項(xiàng)目進(jìn)階

    不同項(xiàng)目之間的通信方式分為,http、socket、webservice;其中socket通信的效率最高,youtube就采用的是原始的socket通信,他們信奉的原則是簡單有效
    2021-09-09

最新評論