Я хочу напечатать несколько листов 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;";