excel的导入与导出

1.excel导入

Excel 导入:

导入所需的依赖,常用的有 Apache POI 和 EasyExcel 等库。

创建一个输入流,读取 Excel 文件。

根据 Excel 文件的格式,使用相应的库解析 Excel 文件,将数据读取到内存中。

遍历读取到的数据,进行相应的处理操作,如数据校验、数据转换等。

将处理后的数据存储到数据库或进行其他业务操作。

Excel 导出:

导入所需的依赖,常用的有 Apache POI 和 EasyExcel 等库。

创建一个工作簿(Workbook)对象,用于存储 Excel 数据。

创建一个工作表(Sheet)对象,用于存储具体的数据。

创建行(Row)对象和单元格(Cell)对象,用于存储数据。

将数据填充到单元格中。

可选地,设置单元格的样式、格式等。

重复步骤 4-6,直到将所有数据填充到工作表中。

将工作表添加到工作簿中。

创建一个输出流,将工作簿中的数据写入到 Excel 文件中。

通过以上步骤,就可以实现 Excel 的导入和导出。具体的实现方式和代码会根据所选用的库和具体需求而有所不同。例如,使用 Apache POI 库时,可以使用 HSSFWorkbook 和 XSSFWorkbook 类来操作 Excel 文件;使用 EasyExcel 库时,可以使用 EasyExcel 类来实现导入和导出。可以根据具体情况选择适合的库和方法进行操作。

2.excel导入

导入 Apache POI 依赖:
		
xml

		
<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 导入的 Controller 类,并添加 @RestController 和 @RequestMapping 注解:
		
java

		
@RestController
@RequestMapping("/excel")
public class ExcelController {

   @PostMapping("/import")
   public String importExcel(@RequestParam("file") MultipartFile file) {
      try {
         InputStream inputStream = file.getInputStream();
         Workbook workbook = WorkbookFactory.create(inputStream);
         Sheet sheet = workbook.getSheetAt(0); // 假设导入的是第一个工作表
         
         // 遍历行
         for (Row row : sheet) {
            // 遍历单元格
            for (Cell cell : row) {
               String value = cell.getStringCellValue();
               // 处理单元格数据
               // ...
            }
         }
         
         // 保存数据到数据库或进行其他业务操作
         
         return "Import success";
      } catch (Exception e) {
         e.printStackTrace();
         return "Import failed";
      }
   }

}

    
	
在 Spring Boot 的配置文件中添加文件上传的配置:
		
properties

		
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB

    
	
创建一个 HTML 页面,用于上传 Excel 文件:
		
html

		
<!DOCTYPE html>
<html>
   <head>
      <meta charset="UTF-8">
      <title>Excel Import</title>
   </head>
   <body>
      <form action="/excel/import" method="post" enctype="multipart/form-data">
         <input type="file" name="file">
         <input type="submit" value="Import">
      </form>
   </body>
</html>

3.excel导出

以下是使用 Spring Boot 实现 Excel 导出的示例代码,以 Apache POI 库为例:

导入 Apache POI 依赖:
		
xml

		
<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 导出的 Controller 类,并添加 @RestController 和 @RequestMapping 注解:
		
java

		
@RestController
@RequestMapping("/excel")
public class ExcelController {

   @GetMapping("/export")
   public void exportExcel(HttpServletResponse response) {
      try {
         Workbook workbook = new XSSFWorkbook();
         Sheet sheet = workbook.createSheet("Sheet1");
         
         // 创建表头
         Row headerRow = sheet.createRow(0);
         headerRow.createCell(0).setCellValue("Column 1");
         headerRow.createCell(1).setCellValue("Column 2");
         // 添加更多表头列
         
         // 创建数据行
         Row dataRow = sheet.createRow(1);
         dataRow.createCell(0).setCellValue("Data 1");
         dataRow.createCell(1).setCellValue("Data 2");
         // 添加更多数据列
         
         response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
         response.setHeader("Content-Disposition", "attachment; filename=exported_data.xlsx");
         workbook.write(response.getOutputStream());
         workbook.close();
      } catch (Exception e) {
         e.printStackTrace();
      }
   }

}

    
	
创建一个 HTML 页面,用于触发 Excel 导出:
		
html

		
<!DOCTYPE html>
<html>
   <head>
      <meta charset="UTF-8">
      <title>Excel Export</title>
   </head>
   <body>
      <a href="/excel/export" target="_blank">Export Excel</a>
   </body>
</html>

    
	
通过以上步骤,用户可以访问 HTML 页面触发 Excel 导出功能。在 Controller 中使用 Apache POI 创建 Excel 文件,并将数据填充到工作表中,最后将工作表写入到 HttpServletResponse 的输出流中,实现 Excel 导出功能。这里的示例仅演示了基本的导出功能,实际应用中可以根据需求添加更多的表头和数据列,以及设置单元格样式等。

4.excel导入导出

在 Java 开发中,常用的 Excel 导入和导出 API 主要有 Apache POI 和 EasyExcel。这两个 API 都提供了丰富的功能,可以方便地进行 Excel 文件的读写操作。

Apache POI: Apache POI 是一个开源的 Java 库,用于操作 Microsoft Office 格式的文档,包括 Excel、Word、PowerPoint 等。对于 Excel 文件的导入和导出操作,Apache POI 提供了 HSSF(Horrible Spreadsheet Format)和 XSSF(XML Spreadsheet Format)两种模式,分别用于处理 Excel 97-2003 格式(.xls 文件)和 Excel 2007 及以上版本的格式(.xlsx 文件)。
主要的类包括:

HSSFWorkbook:用于操作 Excel 97-2003 格式的文件。
XSSFWorkbook:用于操作 Excel 2007 及以上版本的文件。
HSSFSheet 和 XSSFSheet:表示 Excel 中的工作表。
HSSFRow 和 XSSFRow:表示 Excel 中的行。
HSSFCell 和 XSSFCell:表示 Excel 中的单元格。
EasyExcel: EasyExcel 是一个基于 Apache POI 封装的 Java Excel 操作工具,它提供了一种更加简单易用的方式来进行 Excel 文件的读写操作。EasyExcel 支持快速读取大量数据,支持多线程读写,同时具有较好的性能和稳定性。
主要的类包括:

com.alibaba.excel.EasyExcel:EasyExcel 的入口类,提供了读取和写入 Excel 文件的方法。
com.alibaba.excel.annotation.ExcelProperty:用于定义 Excel 文件的字段和表头。
com.alibaba.excel.context.AnalysisContext:分析上下文对象,用于读取 Excel 文件时的上下文信息。

5.excel

在 Spring Boot 中使用 EasyExcel 实现 Excel 导入和导出的示例代码如下:

导入 EasyExcel 依赖:
		
xml

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

    
	
创建一个 Excel 导入的 Controller 类,并添加 @RestController 和 @RequestMapping 注解:
		
java

		
@RestController
@RequestMapping("/excel")
public class ExcelController {

   @PostMapping("/import")
   public String importExcel(@RequestParam("file") MultipartFile file) {
      try {
         // 读取 Excel 文件
         EasyExcel.read(file.getInputStream(), DemoData.class, new DemoDataListener()).sheet().doRead();
         
         // 数据已在监听器中处理,可根据需求进行后续操作
         
         return "Import success";
      } catch (Exception e) {
         e.printStackTrace();
         return "Import failed";
      }
   }

}

    
	
创建一个 Excel 数据模型类,用于存储导入的数据:
		
java

		
public class DemoData {

   @ExcelProperty("姓名")
   private String name;

   @ExcelProperty("年龄")
   private Integer age;

   // 省略 getter 和 setter 方法

}

    
	
创建一个监听器类,用于处理 Excel 导入时的数据:
		
java

		
public class DemoDataListener extends AnalysisEventListener<DemoData> {

   private List<DemoData> dataList = new ArrayList<>();

   @Override
   public void invoke(DemoData data, AnalysisContext context) {
      dataList.add(data);
      // 可根据需求进行数据处理操作
   }

   @Override
   public void doAfterAllAnalysed(AnalysisContext context) {
      // 数据处理完成后的操作,可根据需求进行后续操作
   }

   public List<DemoData> getDataList() {
      return dataList;
   }

}

    
	
创建一个 HTML 页面,用于上传 Excel 文件:
		
html

		
<!DOCTYPE html>
<html>
   <head>
      <meta charset="UTF-8">
      <title>Excel Import</title>
   </head>
   <body>
      <form action="/excel/import" method="post" enctype="multipart/form-data">
         <input type="file" name="file">
         <input type="submit" value="Import">
      </form>
   </body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值