create-base-teek-theme
Version:
``` npm create base-teek-theme@latest my-first-blog ```
195 lines (155 loc) • 4.35 kB
Markdown
---
date: 2025-03-28 03:47:47
title: Excel导入导出
permalink: /pages/d0ea9e
tags:
- Spring Boot
author:
name: 华总
link: https://xiaoying.org.cn
categories:
- 后端
- 功能扩展
- 通用模块
---
## 引用
```java
public class ExcelController {
...
private ExcelService excelService;
...
}
```
## Excel导入
### 基本导入
```java
public List<Excel> upload( List<Excel> dataList) {
// 数据校验
if (dataList == null || dataList.isEmpty()) {
throw new BusinessException(ErrorCode.PARAMS_ERROR, "上传数据为空");
}
// 批量保存到数据库
boolean result = excelService.saveBatch(dataList);
if (!result) {
throw new BusinessException(ErrorCode.OPERATION_ERROR);
}
return dataList;
}
```
### 忽略部分字段
导入的字段会按给定的实体类顺序来,所以当某个字段不需要导入时必须用``,使得导入的Excel表字段的顺序与实体类一致
```java
public class Excel {
// 定义宽度
// 定义列名称
private String username;
// 忽略这个字段
private String password;
}
```
## Excel导出
### 返回单 sheet
```java
public List<ExcelVO> exportExcelVOByPage( ExcelQueryRequest excelQueryRequest,HttpServletRequest request) {
long current = excelQueryRequest.getCurrent();
// 查询数据库
Page<Excel> excelPage = excelService.page(new Page<>(current, 100000000),
excelService.getQueryWrapper(excelQueryRequest));
// 获取封装类
Page<ExcelVO> excelVOPage = excelService.getExcelVOPage(excelPage, request);
return excelVOPage.getRecords();
}
```
### 导出并加密
```java
public List<DemoData> e1() {
return list();
}
```
### 模板导出
```java
public List<DemoData> e1() {
return list();
}
```
### 导出多sheet
```java
public List<List<DemoData>> e1() {
List<List<DemoData>> lists = new ArrayList<>();
lists.add(list());
lists.add(list());
return lists;
}
```
### 导出不同的 Sheet
这里两个 sheet 导出不同类型的对象,只导出 DemoData 中的 username 属性,且将 testData 中的 number 属性排除。
```java
public class ExportMultiSheetController {
public List<List> multiDifferent() {
List<List> lists = new ArrayList<>();
lists.add(demoDatalist());
lists.add(testDatalist());
return lists;
}
private List<DemoData> demoDatalist(){
List<DemoData> dataList = new ArrayList<>();
for (int i = 0; i < 100; i++) {
DemoData data = new DemoData();
data.setUsername("tr1" + i);
data.setPassword("tr2" + i);
dataList.add(data);
}
return dataList;
}
private List<TestData> testDatalist(){
List<TestData> dataList = new ArrayList<>();
for (int i = 0; i < 100; i++) {
TestData data = new TestData();
data.setStr("str" + i);
data.setNumber(i);
data.setLocalDateTime(LocalDateTime.now());
dataList.add(data);
}
return dataList;
}
// 实体对象
public static class DemoData {
private String username;
private String password;
}
public static class TestData {
private String str;
private Integer number;
// 定义宽度
private LocalDateTime localDateTime;
}
}
```