2013-02-01 60 views
3

我正在開發使用Spring 3.0,JSP,瓷磚的Web應用程序。 在JSP頁面中我已經來顯示使用jqGrid的一些數據之一,我已經提供了按鈕,以方便用戶對數據的jqGrid導出到Excel工作表。/導出到Excel的jqGrid數據春JSP

我已經成功創建的jqGrid和我能夠顯示數據。

我想知道如何實現一個按鈕的點擊「導出到Excel」功能。 我試過尋找幾個解決方案,但找不到具體的東西。

我的處理程序代碼:

@RequestMapping(method = RequestMethod.POST, value = "/workQueue") 
@ResponseBody 
public JqgridResponse loadXXXXXX(@RequestParam int page, @RequestParam int rows, @RequestParam String sidx, @RequestParam String sord){ 

    List<ReferralCase> referrals = XXXXService.getReferralCases(); 

    int endLimit = page * rows; 
    int startLimit = endLimit - rows; 
    if (endLimit > referrals.size()) { 
     endLimit = referrals.size(); 
    } 
    JqgridResponse response = new JqgridResponse(); 
    response.setRows(referrals.subList(startLimit, endLimit)); 
    response.setPage(page); 
    response.setRecords(referrals.size()); 
    response.setTotal((referrals.size()/rows) + 1); 
    return response; 
} 

我的JSP/JS代碼:

$("#XXXXWorkQueueGrid").jqGrid({ 
    url:contextRoot+'/dart/workQueue', 
    datatype: 'json', 
    mtype: 'POST', 
    colNames: ['ID','Created','Last Name','First Name','A1','A2','Status','Updated','Workflow'], 
    colModel: [ 
       { name: 'recordId', index: 'recordId', width: 30 }, 
       { name: 'creationDate', index: 'creationDate', width: 40 },     
       { name: 'lastName', index: 'lastName', width: 60 }, 
       { name: 'firstName', index: 'firstName', width: 60 }, 
       { name: 'A1', index: 'A1', width: 25 }, 
       { name: 'A2', index: 'A2', width: 25 }, 
       { name: 'status', index: 'status', width: 40 }, 
       { name: 'updateDate', index: 'updateDate', width: 40 }, 
       { name: 'workflow', index: 'workflow', width: 90 } 
    ],onPaging: function() { 
     $(this).setGridParam({datatype: 'json'}).triggerHandler("reloadGrid"); 
    },loadComplete: function() { 
     $(this).setGridParam({datatype: 'json'}).triggerHandler("reloadGrid"); 
    },loadError: function(xhr,st,err) { 
     alert(err); 
    },onSelectRow : function(rowid, status, e) { 
     var selRow = $(this).getGridParam("selrow"); 
     var selRecordId = $(this).getCell(selRow, 'recordId'); 
     window.location = (contextRoot+"XXXX/referralDetails?recId=" + selRecordId);    
    }, 
    pager: '#XXXXWorkQueuePager', 
    jsonReader: { 
     repeatitems: false, 
     root: "rows", 
     page: "page", 
     total: "total", 
     records: "records" 
    }, 
    sortorder: "asc", 
    sortname: 'recordId', 
    gridview: true, 
    viewrecords: true, 
    hoverrows : false, 
    autowidth: true, 
    height: 'auto', 
    rowNum: 12, 
    forceFit: true, 
    altRows:true 
}); 
$("#XXXXXWorkQueueGrid").jqGrid('navGrid','#XXXXXWorkQueuePager',{edit:false, add:false, del:false, search:false}); 

});

JqgridResponse只是由我創建的自定義DAO類。

任何幫助表示讚賞!

回答

4

您可以使用Apache POI生成一個新的Excel文件,並使用彈簧AbstractExcelView使其可下載。只需按照this turorial設置一切。

+0

謝謝!這真的很有幫助。還有一個問題 - 有沒有辦法以某種方式導出Excel報表中的JQgrid標頭標籤,或者我必須在定義Java類中的Worksheet標頭時明確定義它? – tarares

+0

不客氣,是的,我會直接在Java類中定義頭文件。如果你想在JQgrid和導出的Excel文件中使用相同的名字,我會把這些頭文件放在一個屬性文件中,並通過資源包訪問它們。 –

+0

我已經成功將數據顯示到jQgrid中,現在我想將它導出到excel中。我不想爲控制器中的excel導出編寫另一種方法。我想爲excel導出使用相同的方法。我們應該怎麼做? –