spring如何输出Excel
-
Spring可以通过使用Apache POI库来输出Excel文件。以下是在Spring中输出Excel文件的步骤:
-
添加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' -
创建Excel文件:在Spring中,可以使用Apache POI提供的
XSSFWorkbook类创建一个新的Excel工作簿对象。Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("Sheet1"); -
添加数据到Excel文件:使用
Row和Cell类在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("张三"); -
导出Excel文件:使用
FileOutputStream将Excel工作簿对象写入到文件中。FileOutputStream fileOutputStream = new FileOutputStream("path/to/excel.xlsx"); workbook.write(fileOutputStream); fileOutputStream.close(); -
使用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年前 -
-
Spring提供了多种方式来输出Excel文件。下面是一些常见的方法:
- 使用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();- 使用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());- 使用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);- 使用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();- 使用第三方库:除了上述提到的库之外,还可以使用第三方库,如Apache POI之外的库或者其他JavaExcel库来输出Excel文件。
总之,Spring提供了多种方式来输出Excel文件,可以根据具体的需求选择适合的方法。
1年前 -
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文档的步骤如下:
- 创建一个
Workbook对象,这是整个Excel文档的顶层容器。
Workbook workbook = new XSSFWorkbook();- 创建一个
Sheet对象,表示一个Excel表格。
Sheet sheet = workbook.createSheet("Sheet1");- 创建行,并设置单元格的值。
Row row = sheet.createRow(0); Cell cell1 = row.createCell(0); cell1.setCellValue("Name"); Cell cell2 = row.createCell(1); cell2.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()); }这里的
data是一个数据列表,通过循环遍历来添加行和单元格。- 保存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文档的步骤如下:
- 创建一个ExcelWriter对象。
ExcelWriter writer = EasyExcel.write("output.xlsx").build();这里的"output.xlsx"是输出文件的路径。
- 创建一个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,并设置了表头。
- 添加数据。
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方法将数据写入表格。
- 关闭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年前 - 创建一个