Распечатайте несколько листов Excel с использованием dynamic-jasper 5.1.2 - PullRequest
0 голосов
/ 10 июня 2019

Я хочу напечатать несколько листов Excel в своем приложении Struts 2, сейчас я печатаю его только для одного запроса и хочу добавить в него несколько запросов, источником данных является MySQL 8, я использую dynamic-jasper 5.1.2 и MySQL Workbench 8, решения, которые я нашел, были для более старой версии dynamic-jasper.

/ Это мой основной класс /

public class XlsReportTest extends BaseDjReportTest {
            public DynamicReport buildReport() throws Exception {
                /**
                 * Creates the DynamicReportBuilder and sets the basic options for the report
                 */
                FastReportBuilder drb = new FastReportBuilder();
                Style columDetail = new Style();

                DynamicReport dr = drb.addColumn("Trip_Name", "trip_name", String.class.getName(), 1)
                        .addColumn("organizationid", "Organization_Id", Integer.class.getName(), 1)
                        .addColumn("tripid", "Trip_Id", Integer.class.getName(), 1)
                        .addColumn("sent_time", "SMSDATE", Date.class.getName(), 70, true, "dd/MM/yyyy", null)
                        .addColumn("smscount ", "Todays_RFIDcount", Integer.class.getName(), 1)
                        .addColumn("smscount", "Todays_Tripcount", Integer.class.getName(), 80, true).addGroups(1)
                        .setIgnorePagination(true) // for Excel, we may dont want pagination, just a
                        // plain list
                        .setPrintBackgroundOnOddRows(true).setBottomMargin(5).setAllowDetailSplit(false).setMargins(0, 0, 0, 0)
                        .setPageSizeAndOrientation(Page.Page_Letter_Portrait()).setTitle("Transport SMS( Pre-stop) 14.08.2018")
                        // .setSubtitle("\tThis report was generated at " + new Date())
                        .setReportName("Student Trip Report").setDefaultStyles(null, null, null, columDetail)

                        .setUseFullPageWidth(true).build();

/ * THEДРУГОЙ КЛАСС BaseDjReportTest IS * /

protected JRDataSource getDataSource() throws SQLException {
                String driver = "com.mysql.jdbc.Driver";

                try {
                    Class.forName(driver);
                    conex = DriverManager.getConnection(url, user, pass);

                    String query = "SELECT \r\n" + "    trip_name as Trip_Name,\r\n"
                            + "    organizationid as Organization_Id,\r\n" + "    tripid as Trip_Id,\r\n" + "    SMSDATE,\r\n"
                            + "    SUM(Todays_RFIDcount) AS Todays_RFIDcount,\r\n"
                            + "    SUM(Todays_Tripcount) AS Todays_Tripcount\r\n" + "FROM\r\n" + "    (SELECT \r\n"
                            + "        trip_name,\r\n" + "            organizationid,\r\n" + "            tripid,\r\n"
                            + "            SMSDATE,\r\n" + "            (CASE\r\n"
                            + "                WHEN sms_type = 'RFID' THEN smscount\r\n"
                            + "            END) AS Todays_RFIDcount,\r\n" + "            (CASE\r\n"
                            + "                WHEN sms_type = 'Trip' THEN smscount\r\n"
                            + "            END) AS Todays_Tripcount\r\n" + "    FROM\r\n" + "        (SELECT \r\n"
                            + "        td.trip_name,\r\n" + "            td.organizationid,\r\n" + "            td.tripid,\r\n"
                            + "            sd.sms_type,\r\n" + "            DATE(sd.sent_time) AS SMSDATE,\r\n"
                            + "            COUNT(*) AS smscount\r\n" + "    FROM\r\n"
                            + "        sms_details sd, users_trips ut, trip_details td\r\n" + "    WHERE\r\n"
                            + "        sd.tripid = ut.tripid\r\n" + "            AND ut.tripid = td.tripid\r\n"
                            + "            AND ut.userid = td.userid\r\n" + "            AND sd.orgid = td.organizationid\r\n"
                            + "            AND (sd.sms_type = 'Trip'\r\n" + "            OR sd.sms_type = 'RFID')\r\n"
                            + "            AND td.organizationId = 37101\r\n"
                            + "    GROUP BY td.trip_name , td.organizationid , td.tripid , sd.sms_type) rt) t\r\n"
                            + "GROUP BY trip_name , organizationid , tripid , SMSDATE\r\n"
                            + "ORDER BY trip_name , organizationid , tripid , SMSDATE;";
...