使用Java写出一个可动态设置字段的excal导出方法
时间: 2024-03-09 12:46:44 浏览: 17
可以使用Apache POI来实现动态设置字段的excal导出方法。以下是一个简单的示例代码:
```java
public static void exportToExcel(List<?> dataList, String[] headers, String[] fields, String fileName) throws IOException {
// 创建工作簿
Workbook workbook = new XSSFWorkbook();
// 创建工作表
Sheet sheet = workbook.createSheet();
// 创建表头行
Row headerRow = sheet.createRow(0);
// 写入表头
for (int i = 0; i < headers.length; i++) {
Cell cell = headerRow.createCell(i);
cell.setCellValue(headers[i]);
}
// 写入数据行
for (int i = 0; i < dataList.size(); i++) {
Row dataRow = sheet.createRow(i + 1);
Object data = dataList.get(i);
// 根据字段名获取值
for (int j = 0; j < fields.length; j++) {
try {
Field field = data.getClass().getDeclaredField(fields[j]);
field.setAccessible(true);
Object value = field.get(data);
Cell cell = dataRow.createCell(j);
cell.setCellValue(value != null ? value.toString() : "");
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
}
}
}
// 写入文件
FileOutputStream fos = new FileOutputStream(fileName);
workbook.write(fos);
fos.close();
}
```
使用示例:
```java
List<User> userList = userService.getAllUsers();
String[] headers = {"ID", "姓名", "年龄", "性别"};
String[] fields = {"id", "name", "age", "gender"};
exportToExcel(userList, headers, fields, "user.xlsx");
```
其中,`dataList`是要导出的数据列表,`headers`是表头数组,`fields`是对应的字段名数组,`fileName`是要导出的文件名。导出的文件格式为xlsx。