注意:suplyArea后跟的是其对应数据库表的列名称。
模板一
模板二
注意:
1. 模板的各属性名称后要跟//+指定名称(个人理解就是属性的所属范围,这个属性属于哪一个集合。通过代码可以看出beans.put(“suplyArea”,rcs.getRow()))。所以所有属性后都跟着//suplyArea。
包括首行供应区信息 //suplyArea${suplyArea}//:6,下面最后两空行也是如此,为了将这个范围内所有
excel元素显示在导出的excel中。
2. 在图一和图二中 //:6 和//:5 表示该将行以下的6行和5行也囊括到该集合中来整体显示。否则会出来将同一个属性的所有值全部遍历出来。当然这样的设置是根据实际情况来设置数字的,如果数字设置大于实际的行范围则会抛出空指针异常,如果小于实际的行范围则会导致格式混乱。
代码: List supplyAreaList = saBiz.getSupplyAreaById(supplyAreaId); SupplyArea sa = (SupplyArea) supplyAreaList.get(0); Long id = sa.getSupplyAreaId(); String templateDir = "D:/excel/template/SupplyAreaRecordsInSheet.xls"; String targetDir="D:/excel/export/testRecordsInSheet.xls"; Map beans = new HashMap(); Class.forName("oracle.jdbc.driver.OracleDriver").getInterfaces(); Connection con = DriverManager.getConnection("jdbc:oracle:thin:@168.9.202.49:1521:GIS", "JMJL","JMJL" ); Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE); String query = "select SUPPLYAREA_ID,EDITUSER,SUPPLYAREA_NAME,X,Y," + "REMARKS,STARTDATE,ENDDATE,LIFECYCLE,DATAGUID " + "from HSY_T_SUPPLYAREA where SUPPLYAREA_ID <"+id; ResultSet rs = stmt.executeQuery(query); RowSetDynaClass rsc = new RowSetDynaClass(rs,false); beans.put("suplyArea",rsc.getRows()); XLSTransformer transformer = new XLSTransformer(); transformer.transformXLS(templateDir, beans, targetDir);