使用jasperreport动态生成pdf,excel,html ? 此部分为此函数的核心代码,需要使用的时候需要调用 createReport 方法来执行。 ? createReport(Map pageSet, String title, List coluns, List list, String reportType) 传入参数:pageSet纸张部分设定 ? title 打印的标题,如有必要可以进行相应的扩展 coluns 打印的表头数据 colums结构如下: ? reportType 导出文件的格式 pdf , xls , html 三种文件格式 ? ? 组合完毕后,既能导出相应的文件出来了。 ? ? 下面是结合flex 来创建 上述条件 flex代码 ? ?此函数是我们在flex中做的操作,根据flex的datagrid得到打印的信息,以及表头信息。并传送给后台生成打印文件。
使用jasperreport动态生成pdf,excel,html ?//up down left rigth pageWidth pageHeigth layout(V(竖版),H(横板))int up = mmToPixel(Integer.parseInt(pageSet.get("up").toString()));int down = mmToPixel(Integer.parseInt(pageSet.get("down").toString()));int left = mmToPixel(Integer.parseInt(pageSet.get("left").toString()));int right = mmToPixel(Integer.parseInt(pageSet.get("right").toString()));int pageWidth = mmToPixel(Integer.parseInt(pageSet.get("pageWidth").toString()));int pageHeight = mmToPixel(Integer.parseInt(pageSet.get("pageHeight").toString()));String layout = pageSet.get("layout").toString();
obj["name"] = 名称obj["title"] = 标题obj["width"] = 表格宽度obj["length"] = 如果为多表头的时候有效,设置此表头占用高度obj["array"] = 如果为多表头,将其子表头信息填入(为List)obj为Map类型?
package com.wfy.sa.basic.report{import com.wfy.components.advancedDataGrid.advancedDataGridClasses.AdvancedDataGridColumnGroup;import com.wfy.components.commandmanage.ICommand;import com.wfy.components.datagridext.DataGridColumnExt;import com.wfy.components.datagridext.DataGridExt;import flash.external.ExternalInterface;import mx.rpc.events.ResultEvent;import mx.rpc.remoting.RemoteObject;public class PrintReportByDataGridCommand implements ICommand{private var dataGrid:DataGridExtprivate var title:String;private var remoteObject:Object;private var pageSet:PageSet;public function PrintReportByDataGridCommand(pageSet:PageSet, title:String, dataGrid:DataGridExt)//DataGridExt 对 AdvancedDataGrid进行扩展,与我们没关系{this.title = title;this.pageSet = pageSet;this.dataGrid = dataGrid;this.remoteObject = new RemoteObject("UtilFunctionService");}private var colunsMode:Array = new Array();public function execute():void{//var array:Array = this.dataGrid.columns;//.getDataGridStyleAS().getColumns();var array:Array = this.dataGrid.groupedColumns;var coluns:Array = new Array();coluns = this.ergodicColumns(array, 0);//遍历表格高度。coluns = this.getRowLengthColumns(coluns, 0);var list:Array = new Array();var length:int = this.dataGrid.getRowsLength();for(var j:int=0; j<length; j++){var obj:Object = new Object();for(var k:int=0; k<colunsMode.length; k++){obj[colunsMode[k]["name"]] = this.dataGrid.getLabel(j , colunsMode[k]["name"]);}list.push(obj);}remoteObject.createReportByDataGrid(pageSet, coluns, this.title, list, "pdf");}public function OnResult(resultEvent:ResultEvent):String{var reportUrl:String = resultEvent.result.toString();ExternalInterface.call("window.open", "../"+reportUrl , "打印", "top=0, left=0, toolbar=no, menubar=no, scrollbars=no, resizable=yes, location=no, status=no", "_blank");return "";}private function getRowLengthColumns(array:Array, rowlength:int):Array {for(var i:int=0; i<array.length; i++){if(array[i]["array"]!=null){var arrayI:Array = this.getRowLengthColumns(array[i]["array"], rowlength+1);//arrayI[i]["length"] = RowLength-rowlength-1;array[i]["array"] = arrayI;array[i]["length"] = RowLength-rowlength-1;}else{array[i]["length"] = RowLength-rowlength;}}return array;}private var RowLength:int = 0;private function ergodicColumns(array:Array, rowlength:int):Array {if(rowlength>=RowLength){RowLength = rowlength; }var arrayC:Array = new Array();/** * 需要得到所有表头信息。 * 如果为多级表头时,需要得到每级的表头信息,并记录其信息。 * **/for(var i:int=0; i<array.length; i++){if(array[i] is AdvancedDataGridColumnGroup){var ad:AdvancedDataGridColumnGroup = array[i] as AdvancedDataGridColumnGroup;if(ad.visible){//if(ad.headerText!=null && ad.headerText!=""){var obj:Object = new Object();obj["name"] = ad.dataField;obj["title"] = ad.headerText;obj["width"] = ad.width;obj["array"] = this.ergodicColumns(ad.children, rowlength+1 );arrayC.push(obj);}}else if(array[i] is DataGridColumnExt){var da:DataGridColumnExt = array[i] as DataGridColumnExt;if(da.visible){if(da.dataField!=null && da.dataField!="" && da.headerText!=null && da.headerText!=""){var obj:Object = new Object();obj["name"] = da.dataField;obj["title"] = da.headerText;obj["width"] = da.width;//可能需要重新计算arrayC.push(obj);colunsMode.push(obj);}}}}return arrayC;}}}