本文共 3800 字,大约阅读时间需要 12 分钟。
- public static void test(){
- ReportEnginer enginer = new ReportEnginer();
- String templateFile = "E:/template.xls";
- Map<String, Object> context = new HashMap<String, Object>();
- context.put("title", "测试模板标题");
- context.put("name","测试字段");
- context.put("more","等等。。");
-
-
- List<Map> testList = new ArrayList<Map>();
- for(int i=0;i<5;i++){
- Map innerMap = new HashMap();
- innerMap.put("name", "姓名"+i);
- innerMap.put("sex", "男");
- innerMap.put("age", i);
- innerMap.put("birthday","2016-05-20");
- testList.add(innerMap);
- }
- context.put("testList", testList);
-
-
-
-
-
-
- String destFile = "E:/target.xls";;
- try {
- enginer.excute(templateFile, context, destFile);
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- }
其中的测试模板文件 template.xls 大致如下
然后同理,连接数据库操作类似,就是数据的获取与处理略为不同
-
-
-
-
-
-
- public static String export(String modelName,String cols,String sql){
- ReportEnginer enginer = new ReportEnginer();
- String templateFile = PathKit.getWebRootPath()+"/project/cars3/excelTemplate/"+modelName+".xls";
- String[] colList=cols.split(",");
- Map<String, Object> context = new HashMap<String, Object>();
-
- List<Record> list = Db.find(sql);
- List<Map> testList = new ArrayList<Map>();
- for(Record rec:list){
- Map innerMap = new HashMap();
- for(int j=0;j<colList.length;j++){
-
- if("Status".equals(colList[j])){
- rec.set("Status","Y".equals(rec.get("Status"))?"启用":"停用");
- }
- if("storeName".equals(colList[j])){
- String storeName=Db.queryStr("select storeName from zdmember where storeId=?",rec.get("storeId"));
- rec.set("storeName", storeName);
- }
- if("Content".equals(colList[j])){
- String content=rec.get(colList[j]).toString().trim();
- if(content.contains("\r")){
-
-
- content=content.replaceAll("[\\t\\n\\r]", "");
-
- }
- rec.set(colList[j],content);
- }
- innerMap.put(colList[j],rec.get(colList[j]));
- }
- testList.add(innerMap);
- }
- context.put("models", testList);
- String fileName=DateKit.getCurrentDateTime("yyyyMMddhhmmss")+".xls";
- String destFile = PathKit.getWebRootPath()+"/upload/excel/"+modelName+"/"+fileName;
- try {
- enginer.excute(templateFile, context, destFile);
- } catch (Exception e) {
- e.printStackTrace();
- return "error";
- }
- return fileName;
- }
然后是service层处理
- public void exportExcel(){
- String modelName="a7usedgarage";
- String cols="Title,storeName,Price,Contact,Tel,Saled,AddTime";
- String sql="select * from a7usedgarage order by AddTime desc";
-
- String fileName=ExcelKit.export(modelName, cols,sql);
-
-
-
- renderEasyUISuccess(fileName);
- }
前端JS处理 弹出下载 并提示导出进度
- <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-control-double-270" plain="true" onclick="clickDownload(this,'${CONTEXT_PATH}/project/admin/vehicleManagement/exportExcel')">导出</a>
- function clickDownload(a,url){
- $.ajax({
- url:url,
- type:"post",
- beforeSend: function(){
- $.messager.progress({
- title: 'Please waiting',
- msg: '导出中...',
- interval:0 ,
- });
- progress();
- },
- complete: function(){
- $.messager.progress('close');
- },
- success: function (resp) {
- var iframe = document.createElement("iframe");
- iframe.src = "${CONTEXT_PATH}/upload/excel/a7usedgarage/"+resp.message;
- iframe.style.display = "none";
- document.body.appendChild(iframe);
- },
- });
- }
ps:用到的几个包
jxl-2.6.10.jar
freemarker-2.3.18.jar
freemarker-util-0.0.1-SNAPSHOT.jar
jxl-report-1.0.jar