ruoyi-vue使用excelutil生成excel并将excel存放到指定目录,不是导出
时间: 2025-06-20 22:51:42 浏览: 22
### RuoYi-Vue 中使用 ExcelUtil 生成 Excel 文件并保存到服务器指定目录
在 RuoYi-Vue 项目中,默认情况下 `ExcelUtil` 的功能主要用于将数据导出为 Excel 并返回给前端供用户下载。然而,如果需要将生成的 Excel 文件直接保存到服务器上的某个指定目录,则可以通过调整后端逻辑来实现。
以下是具体实现方法:
#### 后端修改
1. **引入依赖**
需要确保项目的 Maven 或 Gradle 已经包含了 Apache POI 的相关依赖项,用于处理 Excel 文档操作。
如果尚未添加依赖,可以在 `pom.xml` 中加入以下内容:
```xml
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version>
</dependency>
```
2. **自定义工具类**
修改或扩展现有的 `ExcelUtil` 类,使其支持将文件写入服务器磁盘而非输出流。可以创建一个新的静态方法完成此功能。
下面是一个示例代码片段:
```java
public static void exportDataToDisk(List<?> list, String fileName, Class<?> clazz, String savePath) throws IOException {
Workbook workbook = ExcelUtil.createWorkbook(clazz);
Sheet sheet = workbook.getSheetAt(0);
// 将数据填充至工作表
int rowNum = 1;
for (Object obj : list) {
Row row = sheet.createRow(rowNum++);
Field[] fields = clazz.getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
Field field = fields[i];
field.setAccessible(true);
Object value = field.get(obj);
Cell cell = row.createCell(i);
if (value != null) {
cell.setCellValue(value.toString());
}
}
}
// 创建目标路径
File fileDir = new File(savePath);
if (!fileDir.exists()) {
fileDir.mkdirs(); // 若不存在则自动创建目录
}
try (FileOutputStream fos = new FileOutputStream(new File(fileDir, fileName))) {
workbook.write(fos); // 写入文件
} finally {
workbook.close(); // 关闭资源
}
}
```
上述代码实现了以下几个核心功能:
- 使用反射机制遍历对象字段并将值填入单元格[^1]。
- 动态创建目标存储路径,并判断是否存在该路径;若不存在则递归创建父级目录[^1]。
- 利用 `FileOutputStream` 将生成的工作簿写出到本地硬盘位置[^1]。
3. **调用方式**
在实际业务场景下,可通过服务层或者控制器层调用上述方法。例如,在某接口内部执行如下逻辑即可完成文件存盘动作:
```java
@PostMapping("/saveExcelToFile")
public AjaxResult saveExcelToFile() {
List<SysUser> userList = sysUserService.selectSysUserList(null); // 获取待导出的数据列表
String filePath = "/path/to/your/directory"; // 定义保存的目标绝对路径
String fileName = "users_" + System.currentTimeMillis() + ".xlsx";
try {
ExcelUtil.exportDataToDisk(userList, fileName, SysUser.class, filePath);
return AjaxResult.success("成功保存Excel文件!");
} catch (IOException e) {
log.error("Error occurred while saving Excel to disk", e);
return AjaxResult.error("保存失败:" + e.getMessage());
}
}
```
此处需要注意的是,`filePath` 应当设置成应用程序具有读写权限的实际物理地址。
#### 注意事项
- 确认运行环境下的 Web 用户账户拥有足够的权限访问所设定的目的地文件夹。
- 对于大规模数据集来说,建议采用分页加载的方式逐步构建 Excel 行记录以减少内存占用。
- 路径字符串最好通过配置中心统一管理以便后期维护更加便捷高效。
---
阅读全文
相关推荐


















