java - Apache POI Java - 写入 Excel 并动态更新单元格

标签 java spring-boot apache-poi

我的 java spring boot 应用程序需要根据我的数据库内容创建一个新的 excel 文件。我当前的解决方案将数据库中的所有数据放入我的 Excel 工作表中,但我想通过不说明单元格值是什么来改进它。例如,虽然它有效,但我的解决方案有 34 个字段,因此我为每个重复字段声明 userRow.createCell 行 34 次。理想情况下,我想说创建单元格(n)并获取数据库中每一行的所有值。如何才能做到这一点?这个 for 循环中还有另一个 for 循环?我在网上看到的每个例子似乎都具体说明了单元格的值是什么。

List<CaseData> cases = (List<CaseData>) model.get("cases");
    Sheet sheet = workbook.createSheet("PIE Cases");
int rowCount = 1;
    for (CaseData pieCase : cases) {
        Row userRow = sheet.createRow(rowCount++);
        userRow.createCell(0).setCellValue(pieCase.getCaseId());
        userRow.createCell(1).setCellValue(pieCase.getAcknowledgementReceivedDate());
    }

最佳答案

使用Reflection API

示例:

try {
    Class caseDataObj = CaseData.class;
    Method [] methods = caseDataObj.getDeclaredMethods();
    Sheet sheet = workbook.createSheet("PIE Cases");
    int rowCount = 1;
    for(CaseData cd : cases) {
        int cellIndex = 0;
        Row userRow = sheet.createRow(rowCount++);
        for (Method method : methods) {
            String methodName = method.getName();
            if(methodName.startsWith("get")) {
                // Assuming all getters return String
                userRow.createCell(cellIndex++).setCellValue((String) method.invoke(cd));
            }
        }
    }
} catch (Exception e) {
    e.printStackTrace();
}

关于java - Apache POI Java - 写入 Excel 并动态更新单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58977124/

相关文章:

java - 如果使用 ducusign API 通过模板发送嵌入式签名,则没有签名工具

java - Apache 兴趣点。复印纸

java - 执行 PreparedStatement 时得到 "jdbc.SQLServerException: Incorrect syntax near ' ,'"错误

java - 包含嵌套类的类的热代码替换

java - Spring boot 执行没有错误,但是,没有在服务器上创建表

java - 在 Netbeans 中设置 Apache POI API,

java - Apache Poi 如何在每个打印页面的开头添加页眉?

java - LinearLayout 不显示以编程方式添加的图像

java - 从脚本填充内存 hsqldb 数据库

java - Spring REST URI 存在检查