java - 如何使用 apache-poi 在列中显示对象
问题描述
我有一个包含 234 个字段的大 DTO,我必须在使用 apache-poi 创建的 Excel 文件的列中显示此 DTO 的每个字段的值。
这是我的代码:
// Blank workbook
XSSFWorkbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Export values");
// Get the Entity
Simfoot simEntity = simService.findById(simId).get();
Row row = sheet.createRow(0);
row.createCell(1).setCellValue("Consult our values");
// and after this I want to convert my Simfoot object to a column in the third column ( so creteCell(2) ..... ).
我想在我的第一列:什么都没有,在我的第二列中只有字符串显示(“咨询我们的价值观”),在我的第三列中我需要有我的 234 个字段。在一个单元格中有一个字段(字段的值)。因此,234 行在第三列中显示一个值。
我希望这很清楚。
非常感谢你的帮助。
解决方案
使用一些反射:
// Blank workbook
XSSFWorkbook workbook = new XSSFWorkbook();
final Sheet sheet = workbook.createSheet("Export values");
// Get the Entity
final Simfoot simEntity = simService.findById(simId).get();
Row row = sheet.createRow(0);
row.createCell(1).setCellValue("Consult our values");
// and after this I want to convert my Simfoot object to a column in the third column ( so creteCell(2) ..... ).
Arrays.stream(simEntity.getClass().getDeclaredMethods())
.filter(m -> m.getName().startsWith("get") && m.getParameterTypes().length == 0 && !void.class.equals(m.getReturnType()))
.forEach(m -> {
try {
Object value = m.invoke(simEntity, null);
Row r = sheet.createRow(sheet.getLastRowNum()+1);
r.createCell(2).setCellValue(value == null ? "" : value.toString());
}
catch (Exception ex) {
// Manage Exception....
}
});
推荐阅读
- discord - Discord Bot - 将总反应限制为 1
- list - 如何创建页面列表并立即导航到不同页面
- r - 如何从 R Studio 中的数据框中删除大量文本
- python - 在文件系统中找不到 python 的标准库
- reactjs - useState 未正确更新数组
- c# - Unity3D使用法线向量面对世界中的物体
- mysql - 我想在执行 sql 之前提供附加条件
- c++ - 永远不要通知 CListCtrl 的 CHeaderCtrl 的 HDN_TRACK 消息
- c# - 将文本框中给定的 ASCII 文本转换为另一个字符串中的十六进制格式
- php - 用图像格式 PHP 创建一定的数字