Mempoi生成具有相同数据的双张表

时间:2019-07-12 15:48:48

标签: java mysql excel apache-poi mempoi

我想生成一个包含2张纸的xlsx,一张用于经理数据,另一张用于员工数据。 一切顺利,但是当我打开文件时,两张纸都包含相同的数据。

这是我的代码:

private PreparedStatement createStmt() {
    return conn.prepareStatement("SELECT * FROM WORK_PEOPLE");
}


PreparedStatement prepStmtMan = createStmt();
PreparedStatement prepStmtEmp = createStmt();

File fileDest = new File(this.outReportFolder.getAbsolutePath(), "report_2019.xlsx");


MempoiSheet sheet1 = MempoiSheetBuilder.aMempoiSheet()
                    .withSheetName("Mans")
                    .withPrepStmt(prepStmtMan)
                    .build();

MempoiSheet sheet2 = MempoiSheetBuilder.aMempoiSheet()
                    .withSheetName("Emps")
                    .withPrepStmt(prepStmtEmp)
                    .build();

MempoiBuilder.aMemPOI()
                    .withDebug(true)
                    .withFile(fileDest)
                    .withAdjustColumnWidth(true)
                    .addMempoiSheet(sheet1)
                    .addMempoiSheet(sheet2)
                    .withStyleTemplate(new SummerStyleTemplate())
                    .build()
                    .prepareMempoiReportToByteArray()
                    .get();

1 个答案:

答案 0 :(得分:0)

您可以向DBMS指定要通过语句获取哪些数据。现在,您有一个语句"SELECT * FROM WORK_PEOPLE",该语句检索所有WORK_PEOPLE数据。但是您需要2组数据(一组用于EMP,一组用于MAN),因此您将需要2条语句。

根据您的数据库模型,您应该为每个工作表选择数据

示例

如果每张纸的数据在同一张表中,并且用区分符分隔(本示例中为type

PreparedStatement prepStmtMan = createStmt("EMP");
PreparedStatement prepStmtEmp = createStmt("MAN");

private PreparedStatement createStmt(String type) {
    // Create a statement that select data from the WORK_PEOPLE table by TYPE column
    PreparedStatement prepStmt = conn.prepareStatement("SELECT * FROM WORK_PEOPLE WHERE TYPE = ?");

    // Set the specific TYPE to the statement
    prepStmt.setString(1, type);

    return prepStmt;
}

以上声明将

  • SELECT * FROM WORK_PEOPLE WHERE TYPE = EMP将提供所有类型为EMP的WORK_PEOPLE
  • SELECT * FROM WORK_PEOPLE WHERE TYPE = MAN将提供所有类型为MAN
  • 的WORK_PEOPLE

为了更好地了解Prepared Statements,并且还可以使用基本的 SQL 教程