注意: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);

导出结果