spring如何输出Excel

worktile 其他 67

回复

共3条回复 我来回复
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    Spring可以通过使用Apache POI库来输出Excel文件。以下是在Spring中输出Excel文件的步骤:

    1. 添加Apache POI依赖:使用Maven或Gradle在项目中添加Apache POI的依赖。在pom.xml(Maven)或build.gradle(Gradle)中添加以下代码:

      Maven:

      <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>
      

      Gradle:

      implementation 'org.apache.poi:poi:4.1.2'
      implementation 'org.apache.poi:poi-ooxml:4.1.2'
      
    2. 创建Excel文件:在Spring中,可以使用Apache POI提供的XSSFWorkbook类创建一个新的Excel工作簿对象。

      Workbook workbook = new XSSFWorkbook();
      Sheet sheet = workbook.createSheet("Sheet1");
      
    3. 添加数据到Excel文件:使用RowCell类在Excel表格中添加数据。

      // 创建标题行
      Row headerRow = sheet.createRow(0);
      Cell headerCell = headerRow.createCell(0);
      headerCell.setCellValue("姓名");
      
      // 创建数据行
      Row dataRow = sheet.createRow(1);
      Cell dataCell = dataRow.createCell(0);
      dataCell.setCellValue("张三");
      
    4. 导出Excel文件:使用FileOutputStream将Excel工作簿对象写入到文件中。

      FileOutputStream fileOutputStream = new FileOutputStream("path/to/excel.xlsx");
      workbook.write(fileOutputStream);
      fileOutputStream.close();
      
    5. 使用Spring MVC控制器导出Excel文件:在Spring MVC框架中,可以通过编写控制器来处理Excel文件导出请求。

      @RequestMapping(value = "/export-excel", method = RequestMethod.GET)
      public void exportExcel(HttpServletResponse response) throws IOException {
          Workbook workbook = new XSSFWorkbook();
          Sheet sheet = workbook.createSheet("Sheet1");
      
          // 添加数据到Excel文件
      
          // 导出Excel文件
          response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
          response.setHeader("Content-Disposition", "attachment; filename=\"excel.xlsx\"");
          OutputStream outputStream = response.getOutputStream();
          workbook.write(outputStream);
          outputStream.close();
      }
      

    以上是使用Spring输出Excel文件的简单示例。可以根据具体的业务需求进行调整和修改。

    1年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    Spring提供了多种方式来输出Excel文件。下面是一些常见的方法:

    1. 使用POI库:Apache POI库是一个用于读写Microsoft Office格式文件的Java库。Spring可以使用POI库来输出Excel文件。可以创建一个POI工作簿(Workbook)对象,然后添加数据并保存为Excel文件。可以使用以下代码实现:
    Workbook workbook = new HSSFWorkbook();
    Sheet sheet = workbook.createSheet("Sheet1");
    Row row = sheet.createRow(0);
    Cell cell = row.createCell(0);
    cell.setCellValue("Hello, World!");
    
    response.setContentType("application/vnd.ms-excel");
    response.setHeader("Content-Disposition", "attachment; filename=\"hello.xlsx\"");
    
    OutputStream outputStream = response.getOutputStream();
    workbook.write(outputStream);
    outputStream.close();
    
    1. 使用Apache POI和Annotation支持:Spring提供了一个用于导出和导入Excel文件的Annotation支持。可以在Java对象的字段上使用@ExcelColumn注解来标识字段在Excel中的列。可以使用以下代码实现:
    List<User> userList = userService.getAllUsers();
    
    response.setContentType("application/vnd.ms-excel");
    response.setHeader("Content-Disposition", "attachment; filename=\"users.xlsx\"");
    
    ExcelExporter<User> exporter = new ExcelExporter<>(User.class);
    exporter.export(userList, response.getOutputStream());
    
    1. 使用EasyExcel:EasyExcel是基于POI封装的一款简单易用的JavaExcel工具。可以使用EasyExcel来导入和导出Excel文件。可以使用以下代码实现:
    List<User> userList = userService.getAllUsers();
    
    response.setContentType("application/vnd.ms-excel");
    response.setHeader("Content-Disposition", "attachment; filename=\"users.xlsx\"");
    
    EasyExcel.write(response.getOutputStream(), User.class).sheet("Sheet1").doWrite(userList);
    
    1. 使用JExcelAPI:JExcelAPI是另一个用于读写Excel文件的Java库。可以使用JExcelAPI来输出Excel文件。可以使用以下代码实现:
    WritableWorkbook workbook = Workbook.createWorkbook(response.getOutputStream());
    WritableSheet sheet = workbook.createSheet("Sheet1", 0);
    Label label = new Label(0, 0, "Hello, World!");
    sheet.addCell(label);
    
    workbook.write();
    workbook.close();
    
    1. 使用第三方库:除了上述提到的库之外,还可以使用第三方库,如Apache POI之外的库或者其他JavaExcel库来输出Excel文件。

    总之,Spring提供了多种方式来输出Excel文件,可以根据具体的需求选择适合的方法。

    1年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    Spring框架提供了多种方法来输出Excel文档。本文将介绍两种常用的方式:使用Apache POI库和使用EasyExcel库。

    一、使用Apache POI

    Apache POI是一个用于操作Microsoft Office文档的Java库,包括Excel文档。我们可以使用POI库创建并输出Excel文档。

    步骤一:添加依赖

    首先,我们需要在项目中添加POI的依赖。可以在Maven中添加以下依赖:

    <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>
    

    步骤二:创建Excel文档

    使用POI库创建Excel文档的步骤如下:

    1. 创建一个Workbook对象,这是整个Excel文档的顶层容器。
    Workbook workbook = new XSSFWorkbook();
    
    1. 创建一个Sheet对象,表示一个Excel表格。
    Sheet sheet = workbook.createSheet("Sheet1");
    
    1. 创建行,并设置单元格的值。
    Row row = sheet.createRow(0);
    Cell cell1 = row.createCell(0);
    cell1.setCellValue("Name");
    Cell cell2 = row.createCell(1);
    cell2.setCellValue("Age");
    

    在此示例中,我们创建了第一行并设置了两个单元格的值。

    1. 添加更多行和单元格。
      你可以通过循环来添加更多的行和单元格。
    for(int i = 1; i <= data.size(); i++) {
        Row row = sheet.createRow(i);
        Cell cell1 = row.createCell(0);
        cell1.setCellValue(data.get(i-1).getName());
        Cell cell2 = row.createCell(1);
        cell2.setCellValue(data.get(i-1).getAge());
    }
    

    这里的data是一个数据列表,通过循环遍历来添加行和单元格。

    1. 保存Excel文档。
    FileOutputStream output = new FileOutputStream("output.xlsx");
    workbook.write(output);
    output.close();
    

    将Workbook对象写入文件,以保存Excel文档。

    完整示例代码

    import org.apache.poi.ss.usermodel.*;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    
    public class ExcelUtils {
    
        public static void main(String[] args) throws IOException {
            List<Person> data = new ArrayList<>();
            data.add(new Person("Tom", 25));
            data.add(new Person("Mike", 30));
            data.add(new Person("Alice", 27));
    
            Workbook workbook = new XSSFWorkbook();
            Sheet sheet = workbook.createSheet("Sheet1");
    
            Row headerRow = sheet.createRow(0);
            Cell headerCell1 = headerRow.createCell(0);
            headerCell1.setCellValue("Name");
            Cell headerCell2 = headerRow.createCell(1);
            headerCell2.setCellValue("Age");
    
            for (int i = 1; i <= data.size(); i++) {
                Row row = sheet.createRow(i);
                Cell cell1 = row.createCell(0);
                cell1.setCellValue(data.get(i - 1).getName());
                Cell cell2 = row.createCell(1);
                cell2.setCellValue(data.get(i - 1).getAge());
            }
    
            FileOutputStream output = new FileOutputStream("output.xlsx");
            workbook.write(output);
            output.close();
        }
    
        private static class Person {
            private String name;
            private int age;
    
            public Person(String name, int age) {
                this.name = name;
                this.age = age;
            }
    
            public String getName() {
                return name;
            }
    
            public int getAge() {
                return age;
            }
        }
    }
    

    以上代码将创建一个包含姓名和年龄的表格,并保存为一个名为"output.xlsx"的Excel文档。

    二、使用EasyExcel

    EasyExcel是一个基于POI封装的简化操作Excel的Java库。相比于POI,EasyExcel使用起来更加简单方便。

    步骤一:添加依赖

    首先,我们需要在项目中添加EasyExcel的依赖。可以在Maven中添加以下依赖:

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>easyexcel</artifactId>
        <version>2.1.7</version>
    </dependency>
    

    步骤二:创建Excel文档

    使用EasyExcel库创建Excel文档的步骤如下:

    1. 创建一个ExcelWriter对象。
    ExcelWriter writer = EasyExcel.write("output.xlsx").build();
    

    这里的"output.xlsx"是输出文件的路径。

    1. 创建一个Sheet,并设置表头。
    Sheet sheet = new Sheet(1, 0);
    sheet.setSheetName("Sheet1");
    List<List<String>> head = new ArrayList<>();
    head.add(Arrays.asList("Name", "Age"));
    sheet.setHead(head);
    

    这里使用了EasyExcel中Sheet和Head的概念,Sheet表示Excel中的一个表格,Head表示表格的表头。以上代码中,我们创建了一个Sheet,并设置了表头。

    1. 添加数据。
    List<List<Object>> data = new ArrayList<>();
    data.add(Arrays.asList("Tom", 25));
    data.add(Arrays.asList("Mike", 30));
    data.add(Arrays.asList("Alice", 27));
    writer.write(data, sheet);
    

    这里的data是要添加到表格中的数据,通过write方法将数据写入表格。

    1. 关闭ExcelWriter,保存Excel文档。
    writer.finish();
    

    完整示例代码

    import com.alibaba.excel.EasyExcel;
    import com.alibaba.excel.write.builder.ExcelWriterBuilder;
    import com.alibaba.excel.write.metadata.WriteSheet;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    
    public class ExcelUtils {
    
        public static void main(String[] args) {
            List<List<Object>> data = new ArrayList<>();
            data.add(Arrays.asList("Name", "Age"));
            data.add(Arrays.asList("Tom", 25));
            data.add(Arrays.asList("Mike", 30));
            data.add(Arrays.asList("Alice", 27));
    
            ExcelWriterBuilder writerBuilder = EasyExcel.write("output.xlsx");
            WriteSheet sheet = EasyExcel.writerSheet("Sheet1").build();
            writerBuilder.sheet().setHead(data.get(0));
            writerBuilder.sheet().autoWidth();
    
            writerBuilder.sheet().doWrite(data.subList(1, data.size()));
        }
    }
    

    以上代码使用EasyExcel创建并输出了一个包含姓名和年龄的表格。

    小结

    本文介绍了两种使用Spring输出Excel文档的方法,分别使用Apache POI和EasyExcel两个库。使用POI库需要手动创建Workbook、Sheet和Cell,并将数据逐个写入单元格,而使用EasyExcel库相对简单,只需创建Sheet和Head,并将数据写入即可。选择哪种方式取决于个人的需求和偏好。

    1年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部