纯Java制作的三个典型报表图代码全分享!!(三)

[复制链接]
查看11 | 回复2 | 2007-1-24 12:56:49 | 显示全部楼层 |阅读模式
上接报表一、二
报表二:CrossReport
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();

// 定义程序数据集

String[] columnNames = {"产品", "销售额"};

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:调整报表的列宽

workSheet.setColumnWidth(2, 200);





// 将数据集添加到workSheet中, Employee为表名

workSheet.putTableData("Employee1", tableData1);

workSheet.putTableData("Employee2", tableData2);





// 把产品填入到A2

DSColumn dsColumn = new DSColumn();

dsColumn.setDSName("Employee1");

dsColumn.setGrouper(new FunctionGrouper());

dsColumn.setColumn(TableDataColumn.createColumn("产品"));

CellElement cellElement = workSheet.getCellElement(0, 1);

cellElement.setValue(dsColumn);





// 把产品填入到B2

dsColumn = new DSColumn();

dsColumn.setDSName("Employee2");

dsColumn.setGrouper(new FunctionGrouper());

dsColumn.setColumn(TableDataColumn.createColumn("销售额"));

//marks:设置条件,产品=A2

dsColumn.setCondition(new CommonCondition("产品",Compare.EQUALS,ColumnRow.valueOf(0,1)));

cellElement = workSheet.getCellElement(1, 1);

cellElement.setValue(dsColumn);
// 把产品填入到C2

dsColumn = new DSColumn();

dsColumn.setDSName("Employee1");

dsColumn.setGrouper(new FunctionGrouper());

dsColumn.setColumn(TableDataColumn.createColumn("销售额"));

cellElement = workSheet.getCellElement(2, 1);

cellElement.setValue(dsColumn);



//marks:设置单元格字体,
// 得到CellElement的样式,如果没有新建默认样式

Style style = cellElement.getStyle();

if(style == null) {

style = Style.getInstance();

}



// 设置字体和前景的颜色

FRFont frFont = FRFont.getInstance("Dialog", Font.BOLD, 14);

frFont = frFont.applyForeground(new Color(21, 76, 160));

style = style.deriveFRFont(frFont);



// 设置背景

ColorBackground background = ColorBackground.getInstance(new Color(255, 255, 177));

style = style.deriveBackground(background);



// 设置水平居中

style = style.deriveHorizontalAlignment(Constants.CENTER);



// 设置边框

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;

}
}
回复

使用道具 举报

千问 | 2007-1-24 12:56:49 | 显示全部楼层
GOOD!
回复

使用道具 举报

千问 | 2007-1-24 12:56:49 | 显示全部楼层
纯广告
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行