jeecg 导出excel
时间: 2023-08-25 20:05:56 浏览: 153
Jeecg 是一款基于代码生成器和模板引擎的开源快速开发框架,它提供了丰富的代码生成功能,包括导出 Excel 功能。下面是 Jeecg 中导出 Excel 的示例代码:
1. 首先在需要导出 Excel 的 Controller 中注入 ExcelUtil 工具类:
```java
@Autowired
private ExcelUtil excelUtil;
```
2. 在需要导出 Excel 的方法中使用 ExcelUtil 工具类生成 Excel 文件:
```java
@RequestMapping(value = "/exportExcel")
public void exportExcel(HttpServletRequest request, HttpServletResponse response) {
// 查询数据
List<MyEntity> dataList = myService.getDataList();
// 定义表头
String[] headers = {"ID", "名称", "时间"};
// 定义数据字段
String[] fields = {"id", "name", "time"};
// 使用 ExcelUtil 工具类生成 Excel 文件
excelUtil.exportExcel("导出数据", headers, fields, dataList, response);
}
```
其中,`MyEntity` 是需要导出的实体类,`getDataList()` 方法是从数据库或其他地方获取需要导出的数据,`headers` 数组存放 Excel 表头,`fields` 数组存放实体类的属性名与表头对应,最后调用 `exportExcel` 方法生成 Excel 文件并返回给前端。
3. ExcelUtil 工具类示例代码:
```java
public class ExcelUtil {
/**
* 导出 Excel 文件
*
* @param title Excel 标题
* @param headers 表头
* @param fields 数据字段
* @param dataList 数据列表
*/
public void exportExcel(String title, String[] headers, String[] fields, List<?> dataList, HttpServletResponse response) {
try {
// 创建工作簿
HSSFWorkbook workbook = new HSSFWorkbook();
// 创建工作表
HSSFSheet sheet = workbook.createSheet(title);
// 创建表头行
HSSFRow headerRow = sheet.createRow(0);
// 设置表头单元格样式
HSSFCellStyle headerCellStyle = workbook.createCellStyle();
headerCellStyle.setFillForegroundColor(IndexedColors.PALE_BLUE.getIndex());
headerCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
headerCellStyle.setAlignment(HorizontalAlignment.CENTER);
headerCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
headerCellStyle.setBorderTop(BorderStyle.THIN);
headerCellStyle.setBorderBottom(BorderStyle.THIN);
headerCellStyle.setBorderLeft(BorderStyle.THIN);
headerCellStyle.setBorderRight(BorderStyle.THIN);
// 创建表头单元格
for (int i = 0; i < headers.length; i++) {
HSSFCell headerCell = headerRow.createCell(i);
headerCell.setCellValue(headers[i]);
headerCell.setCellStyle(headerCellStyle);
}
// 设置数据单元格样式
HSSFCellStyle dataCellStyle = workbook.createCellStyle();
dataCellStyle.setAlignment(HorizontalAlignment.CENTER);
dataCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
dataCellStyle.setBorderTop(BorderStyle.THIN);
dataCellStyle.setBorderBottom(BorderStyle.THIN);
dataCellStyle.setBorderLeft(BorderStyle.THIN);
dataCellStyle.setBorderRight(BorderStyle.THIN);
// 创建数据单元格
for (int i = 0; i < dataList.size(); i++) {
HSSFRow dataRow = sheet.createRow(i + 1);
Object obj = dataList.get(i);
for (int j = 0; j < fields.length; j++) {
HSSFCell dataCell = dataRow.createCell(j);
Field field = obj.getClass().getDeclaredField(fields[j]);
field.setAccessible(true);
Object value = field.get(obj);
if (value instanceof Date) {
dataCell.setCellValue((Date) value);
} else {
dataCell.setCellValue(value.toString());
}
dataCell.setCellStyle(dataCellStyle);
}
}
// 设置响应头
response.setContentType("application/octet-stream;charset=utf-8");
response.setHeader("Content-Disposition", "attachment;filename=" + new String((title + ".xls").getBytes(), "iso-8859-1"));
// 输出 Excel 文件
workbook.write(response.getOutputStream());
response.getOutputStream().flush();
response.getOutputStream().close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
以上就是 Jeecg 中导出 Excel 的示例代码,你可以根据自己的需求进行修改。
阅读全文