package ms; import java.awt.Color; import java.awt.Font; import java.io.File; import com.fr.base.ColumnRow; import com.fr.base.Constants; import com.fr.base.FRFont; import com.fr.base.Style; import com.fr.base.background.ColorBackground; import com.fr.data.condition.CommonCondition; import com.fr.data.core.Compare; import com.fr.demo.ArrayTableDataDemo; import com.fr.report.CellElement; import com.fr.report.Report; import com.fr.report.WorkBook; import com.fr.report.WorkSheet; import com.fr.report.cellElement.TableDataColumn; import com.fr.report.cellElement.core.DSColumn; import com.fr.report.cellElement.core.FunctionGrouper; import com.fr.report.io.TemplateImporter; import com.fr.web.Reportlet; import com.fr.web.ReportletException; import com.fr.web.ReportletRequest; public class CompareReportlet implements Reportlet { public Report createReport(ReportletRequest req) throws ReportletException { WorkBook workBook = null; try { File cptFile = new File("D:\\comparereport.cpt"); TemplateImporter templateImporter = new TemplateImporter(cptFile); workBook = (WorkBook)templateImporter.generateReport(); // 定義程序數(shù)據(jù)集 String[] columnNames = {"產(chǎn)品", "銷售額"}; Object[][] rowData1 = { {"手機", new Integer(500)}, {"相機", new Integer(600)}, {"手表", new Integer(800)} }; Object[][] rowData2 = { {"手機", new Integer(300)}, {"相機", new Integer(100)} }; ArrayTableDataDemo tableData1 = new ArrayTableDataDemo(columnNames, rowData1); ArrayTableDataDemo tableData2= new ArrayTableDataDemo(columnNames, rowData2); WorkSheet workSheet = (WorkSheet)workBook.getReport(0); //marks:調(diào)整報表的列寬 workSheet.setColumnWidth(2, 200); // 將數(shù)據(jù)集添加到workSheet中, Employee為表名 workSheet.putTableData("Employee1", tableData1); workSheet.putTableData("Employee2", tableData2); // 把產(chǎn)品填入到A2 DSColumn dsColumn = new DSColumn(); dsColumn.setDSName("Employee1"); dsColumn.setGrouper(new FunctionGrouper()); dsColumn.setColumn(TableDataColumn.createColumn("產(chǎn)品")); CellElement cellElement = workSheet.getCellElement(0, 1); cellElement.setValue(dsColumn); // 把產(chǎn)品填入到B2 dsColumn = new DSColumn(); dsColumn.setDSName("Employee2"); dsColumn.setGrouper(new FunctionGrouper()); dsColumn.setColumn(TableDataColumn.createColumn("銷售額")); //marks:設(shè)置條件,產(chǎn)品=A2 dsColumn.setCondition(new CommonCondition("產(chǎn)品",Compare.EQUALS,ColumnRow.valueOf(0,1))); cellElement = workSheet.getCellElement(1, 1); cellElement.setValue(dsColumn); // 把產(chǎn)品填入到C2 dsColumn = new DSColumn(); dsColumn.setDSName("Employee1"); dsColumn.setGrouper(new FunctionGrouper()); dsColumn.setColumn(TableDataColumn.createColumn("銷售額")); cellElement = workSheet.getCellElement(2, 1); cellElement.setValue(dsColumn); //marks:設(shè)置單元格字體, // 得到CellElement的樣式,如果沒有新建默認樣式 Style style = cellElement.getStyle(); if(style == null) { style = Style.getInstance(); } // 設(shè)置字體和前景的顏色 FRFont frFont = FRFont.getInstance("Dialog", Font.BOLD, 14); frFont = frFont.applyForeground(new Color(21, 76, 160)); style = style.deriveFRFont(frFont); // 設(shè)置背景 ColorBackground background = ColorBackground.getInstance(new Color(255, 255, 177)); style = style.deriveBackground(background); // 設(shè)置水平居中 style = style.deriveHorizontalAlignment(Constants.CENTER); // 設(shè)置邊框 style = style.deriveBorder(Constants.LINE_DASH_DOT, Color.red, Constants.LINE_DASH_DOT, Color.yellow, Constants.LINE_DASH_DOT, Color.BLUE, Constants.LINE_DASH_DOT, Color.CYAN); cellElement.setStyle(style); } catch (Exception exp) { exp.printStackTrace(); } return workBook; } } |