ruoyi框架导出csv内容
时间: 2025-07-08 19:00:48 浏览: 4
### RuoYi 框架导出 CSV 文件
在 RuoYi 框架中,虽然主要提供了 Excel 的导入导出功能[^1],但是可以基于相同的原则来实现 CSV 文件的导出。以下是通过修改现有方法以支持 CSV 文件导出的一个示例。
#### 修改 `exportExcel` 方法为 `exportCsv`
为了适应 CSV 文件的需求,需要调整原有用于处理 Excel 文件的方法逻辑:
```java
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
public class CsvExportService {
/**
* 将列表数据源中的数据导出至CSV文件.
*
* @param list 数据集合
* @param fileName 文件名称
*/
public void exportCsv(List<T> list, String fileName, HttpServletResponse response) {
try (PrintWriter writer = new PrintWriter(new OutputStreamWriter(response.getOutputStream(), StandardCharsets.UTF_8))) {
// 设置响应头信息
response.setContentType("text/csv");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8") + ".csv");
// 构建表头
StringBuilder headerLine = new StringBuilder();
for (String columnTitle : getColumnTitles()) {
headerLine.append(columnTitle).append(",");
}
writer.println(headerLine.toString().replaceAll(",$", ""));
// 写入每一行记录
for (T item : list) {
StringBuilder line = new StringBuilder();
for (Object value : getItemValues(item)) {
line.append(value != null ? escapeSpecialCharacters(value.toString()) : "").append(",");
}
writer.println(line.toString().replaceAll(",$", ""));
}
writer.flush();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
private List<String> getColumnTitles() {
// 返回表头标题数组
return Arrays.asList("ID", "Name", "Description"); // 示例表头
}
private List<Object> getItemValues(T item) {
// 获取每条记录对应的值
return Arrays.asList(
item.getId(),
item.getName(),
item.getDescription()
); // 假设 T 类型有这些 getter 方法
}
private static String escapeSpecialCharacters(String data) {
String escapedData = data.replaceAll(",", ";").replaceAll("\"", "\"\"");
if (data.contains(",") || data.contains("\n") || data.contains("\"")) {
data = "\"" + escapedData + "\"";
}
return data;
}
}
```
此代码片段展示了如何构建一个简单的服务类来进行 CSV 文件的导出操作。注意这里使用了 UTF-8 编码以及适当转义特殊字符(如逗号),确保生成的 CSV 文件能够被正确解析并显示中文内容。
对于更复杂的场景,比如涉及多个工作簿或多页签的情况,在 CSV 中并不适用;因此建议在这种情况下继续沿用 Excel 格式作为输出格式。
阅读全文
相关推荐


















