- 浏览: 550014 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
jsdsh:
自己写的就是不一样.
Spring3 MVC 注解(二)---@RequestMapping -
jsdsh:
吼,非常吼.学习了
Spring3 MVC 注解(一)---注解基本配置及@controller和 @RequestMapping 常用解释 -
爱情是一种错觉:
我爱你 i love 你[color=red][/color] ...
Spring3 MVC 注解(一)---注解基本配置及@controller和 @RequestMapping 常用解释 -
fs08ab:
大哥,目前这个问题有什么可靠的解决方案吗
@ResponseBody注解 -
lhs295988029:
说的很清楚,明白了~
Spring3 MVC 注解(一)---注解基本配置及@controller和 @RequestMapping 常用解释
package test;
import java.io.*;
import java.util.*;
import javax.xml.parsers.*;
import java.awt.*;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.*;
import org.w3c.dom.*;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import com.lowagie.text.Font;
import com.lowagie.text.pdf.*;
import com.lucaslee.report.*;
import com.lucaslee.report.grouparithmetic.*;
import com.lucaslee.report.model.*;
import com.lucaslee.report.model.Table;
import com.lucaslee.report.model.crosstable.*;
import com.lucaslee.report.printer.*;
/**
* 生成交叉表报表例子。
* 从main方法开始执行。
* 注意:例子中对程序段的注释,方法是:在程序段前面加注释,在程序段后面注明段的结束.如:
* 前面://****xxxx***********
* 后面://****end xxxx*******
*
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company:Lucas-lee Soft </p>
* @author Lucas Lee
* @version 1.0
*/
public class TestCrossReport {
public TestCrossReport() {
}
/**
* 根据报表对象生成csv格式的报表.
* @param report 报表对象
* @throws Exception
*/
public static void getExcelReport(Report report,OutputStream os) throws Exception {
ExcelCss css = new ExcelCss() {
public void init(HSSFWorkbook workbook) {
//*****************定义字体*****************
//普通字体
HSSFFont fontNormal = workbook.createFont();
fontNormal.setFontHeightInPoints( (short) 10);
fontNormal.setFontName("宋体");
//粗体
HSSFFont fontBold = workbook.createFont();
fontBold.setFontHeightInPoints( (short) 10);
fontBold.setFontName("宋体");
fontBold.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
//大、粗字体
HSSFFont fontBig = workbook.createFont();
fontBig.setFontHeightInPoints( (short) 15);
fontBig.setFontName("宋体");
fontBig.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
//*****************end定义字体*****************
//***************设置EXCEL报表的样式表******************
HSSFCellStyle style = workbook.createCellStyle();
style.setFillForegroundColor(HSSFColor.PALE_BLUE.index);
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
style.setFont(fontNormal);
this.setGroupTotal(style);
style = workbook.createCellStyle();
style.setFillForegroundColor(HSSFColor.PALE_BLUE.index);
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
style.setFont(fontNormal);
this.setGroupTotal(style);
this.setTotal(style);
style = workbook.createCellStyle();
style.setFillForegroundColor(HSSFColor.LIGHT_ORANGE.index);
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
style.setFont(fontBold);
this.setHead(style);
style = workbook.createCellStyle();
style.setFont(fontBig);
this.setTitle(style);
style = workbook.createCellStyle();
style.setFont(fontNormal);
this.setData(style);
style = workbook.createCellStyle();
style.setFillForegroundColor(HSSFColor.ORANGE.index);
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
style.setFont(fontNormal);
this.setCrossHeadHead(style);
this.setDefaultColumnWidth( (short) 10);
//***************end 设置EXCEL报表的样式表******************
}
};
//执行EXCEL格式报表的输出
new ExcelPrinter().print(report, css, os);
System.out.println("生成Excel格式报表成功。");
}
/**
* 根据报表对象生成HTML格式的报表.
* @param report 报表对象
* @throws Exception
*/
public static void getHTMLReport(Report report,OutputStream os) throws Exception {
//***************设置HTML报表的样式表******************
HTMLCss css = new HTMLCss();
css.setGroupTotal("BACKGROUND-COLOR: #d8e4f1; font: bold 12pt 隶书;");
css.setHead("BACKGROUND-COLOR: #ffdead; font: bold 12pt 隶书;");
css.setTotal("BACKGROUND-COLOR: #d8e4f1; font: bold 12pt 隶书;");
css.setTitle("font: bold 18pt ;");
css.setData("font: 12pt");
css.setCrossHeadHead("BACKGROUND-COLOR: #a68763; font: 9pt ");
//***************end 设置HTML报表的样式表******************
//执行HTML格式报表的输出
new HTMLPrinter().print(report, css, os);
System.out.println("生成HTML格式报表成功。");
}
/**
* 根据报表对象生成pdf格式的报表.
* @param report 报表对象
* @throws Exception
*/
public static void getPDFReport(Report report,OutputStream os) throws Exception {
//******************定义pdf中文字体*****************
BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",
BaseFont.NOT_EMBEDDED);
BaseFont bfChineseBold = BaseFont.createFont("STSong-Light,Bold",
"UniGB-UCS2-H",
BaseFont.NOT_EMBEDDED);
Font FontChinese = new Font(bfChinese, 10, Font.NORMAL);
Font FontChineseBold = new Font(bfChineseBold, 10, Font.NORMAL);
//******************end 定义pdf中文字体*****************
//****************设置pdf报表的样式表*********************
PDFCss css = new PDFCss();
PDFCssItem item = new PDFCssItem();
item.setBackgroudColor(new Color(0xd8e4f1));
item.setFont(FontChinese);
css.setGroupTotal(item);
css.setTotal(item);
item = new PDFCssItem();
item.setBackgroudColor(new Color(0xffdead));
item.setFont(FontChineseBold);
css.setHead(item);
item = new PDFCssItem();
item.setFont(new Font(bfChineseBold, 15, Font.BOLD));
css.setTitle(item);
item = new PDFCssItem();
item.setFont(new Font(bfChinese, 10, Font.NORMAL));
css.setData(item);
item = new PDFCssItem();
item.setFont(new Font(bfChinese, 7, Font.NORMAL));
item.setBackgroudColor(new Color(0xffdead));
css.setCrossHeadHead(item);
//****************end 设置pdf报表的样式表*********************
//执行PDF格式报表的输出
new PDFPrinter().print(report, css, os);
System.out.println("生成PDF格式报表成功。");
}
/**
* 根据报表对象生成csv格式的报表.
* @param report 报表对象
* @throws Exception
*/
public static void getCSVReport(Report report,OutputStream os) throws Exception {
//执行CSV格式报表的输出
new CSVPrinter().print(report, os);
System.out.println("生成CSV格式报表成功。");
}
/**
* 设置报表的头部和尾部.
* @param report 要设置头尾的报表对象.
* @throws ReportException
*/
private static void setTitleFooter(Report report) throws ReportException {
//*****************设置报表头部*********************
Table headerTable = new Table();
//设置表格的宽度比例(百分比)
int[] widths = {
20, 60, 20};
headerTable.setWidths(widths);
report.setHeaderTable(headerTable);
headerTable.setBorder(0);
headerTable.setAlign(headerTable.ALIGN_CENTER);
TableCell tc = null;
TableRow tr = null;
tr = new TableRow(3);
headerTable.addRow(tr);
tc = tr.getCell(0);
tc.setColSpan(3);
tc.setAlign(tc.ALIGN_CENTER);
tc.setContent("中国XXX股份有限公司XXX分公司");
tr.getCell(1).setIsHidden(true);
tr.getCell(2).setIsHidden(true);
tr = new TableRow(3);
headerTable.addRow(tr);
tc = tr.getCell(0);
tc.setColSpan(3);
tc.setAlign(tc.ALIGN_CENTER);
tc.setContent("产品销售统计报表");
tc.setCssClass(Report.TITLE_TYPE);
tr.getCell(1).setIsHidden(true);
tr.getCell(2).setIsHidden(true);
tr = new TableRow(3);
headerTable.addRow(tr);
tr = new TableRow(3);
headerTable.addRow(tr);
tc = tr.getCell(0);
tc.setContent("单位:xxx分公司");
tc.setAlign(tc.ALIGN_LEFT);
tc = tr.getCell(1);
tc.setContent("报表日期:2003-11-11至2003-11-16");
tc.setAlign(tc.ALIGN_CENTER);
tc = tr.getCell(2);
tc.setAlign(tc.ALIGN_RIGHT);
tc.setContent("单位:吨 元");
//*****************end 设置报表头部*********************
//*****************设置报表尾部*********************
Table footerTable = new Table();
report.setFooterTable(footerTable);
tr = new TableRow(3);
footerTable.setBorder(0);
footerTable.setAlign(footerTable.ALIGN_CENTER);
footerTable.addRow(tr);
tr.getCell(0).setContent("制表人:xxx");
tr.getCell(0).setAlign(tc.ALIGN_LEFT);
tr.getCell(1).setContent("审核人:xxx");
tr.getCell(1).setAlign(tc.ALIGN_CENTER);
tr.getCell(2).setContent("制表日期:xxx");
tr.getCell(2).setAlign(tc.ALIGN_RIGHT);
//*****************end 设置报表尾部*********************
}
/**
* 从xml文件获得原始数据表格.注意其中使用的crossTabSample.xml应该设置为此文件所在的路径.
* @return
* @throws Exception
*/
private static Table getTableByXML() throws Exception {
//xml文件路径,应该设置为crossTabSample.xml所在的路径
String fileName = "E:\\crossTabSample.xml";
Table t = new Table();
//用JAXP读取xml文件
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().
parse(new File(fileName));
Element e = doc.getDocumentElement();
NodeList xmlTab = e.getChildNodes();
for (int i = 0; i < xmlTab.getLength(); i++) {
if (xmlTab.item(i).getNodeName().equals("Row")) {
TableRow tr = new TableRow();
NodeList xmlTR = xmlTab.item(i).getChildNodes();
for (int j = 0; j < xmlTR.getLength(); j++) {
if (xmlTR.item(j).getNodeName().equals("data")) {
TableCell tc = new TableCell();
tc.setContent(xmlTR.item(j).getFirstChild().getNodeValue());
tr.addCell(tc);
}
}
t.addRow(tr);
}
}
return t;
}
/**
* 获得报表对象
* @throws Exception
* @return Report
*/
public static Report getReport() throws Exception {
//报表管理器
ReportManager rm = new ReportManager();
//待处理的原始数据表格对象
Table t = getTableByXML();
//************定义交叉表*************
HeadCol[] colH = {
new HeadCol(2, "厂家")};
HeadCol[] rowH = {
new HeadCol(0, "品种"), new HeadCol(1, "市场")};
Vector sort1 = new Vector();
sort1.add("本单位");
sort1.add("长江牌");
colH[0].setSortSeq(sort1);
CrossCol crs = new CrossCol(3, "销售额", new SumArithmetic());
CrossTable crossTab = new CrossTable(colH, rowH, crs);
//************end 定义交叉表*************
//通过原始数据和交叉表的定义生成交叉表
t = rm.generateCrossTab(t, crossTab);
//进行行统计
t = rm.generateCrossTabRowTotal(t, crossTab, true,
new SumArithmetic());
//进行列统计
t = rm.generateCrossTabColTotal(t, crossTab, false, new SumArithmetic());
//格式化数据
t = rm.formatData(t, crossTab, new DefaultFormatter());
//****************定义报表的其他部分****************
Report report = new Report();
//将交叉表设为报表的主体
ReportBody body = new ReportBody();
body.setData(t);
report.setBody(body);
//设置报表的头和尾两部分
setTitleFooter(report);
//****************end 定义报表的其他部分************
return report;
}
/**
* 生成报表.
* @throws Exception
*/
public static void generateReport() throws Exception {
Report report = getReport();
//输出文件
FileOutputStream fo=null;
try {
//生成HTML格式报表
/* fo = new FileOutputStream("crossTab.html");
getHTMLReport(report, fo);
fo.close();
//生成PDF格式报表
fo = new FileOutputStream("crossTab.pdf");
getPDFReport(report, fo);
fo.close();
//生成CSV格式报表
fo = new FileOutputStream("crossTab.csv");
getCSVReport(report, fo);
fo.close();*/
//生成Excel格式报表
fo = new FileOutputStream("E:\\crossTab.xls");
getExcelReport(report, fo);
fo.flush();
fo.close();
} finally{
if(fo!=null) fo.close();
}
}
public static void main(String[] args) throws Exception {
generateReport();
}
}
发表评论
-
使用MongoDB和Spring Data创建一个简单的Java 的CRUD应用
2012-08-01 09:57 1436MongoDB 是一个可扩展的、高性能的、开源的NoSQL ... -
JAVA解决大批量导出数据到excel产生内存溢出的方案 (转)
2012-06-15 10:12 0@SuppressWarnings("u ... -
SSH配置多个数据源
2012-03-13 14:41 01. 编写hibernate的数据库配置文 Mysql_hi ... -
HTML字符实体(Character Entities),转义字符串(Escape Sequence)
2012-02-27 10:39 2159为什么要用转义字符串 ... -
使用SMSLib发短信(收集)
2012-02-07 14:54 24011.mysql做后台数据库; 2 ... -
Apache Commons工具集简介
2011-12-27 19:11 987Apache Commons包含了很多开源的工具,用于解决 ... -
转:YouTube 架构学习体会
2011-11-22 15:23 1186YouTube发展迅速,每天超过1亿的视频点击量,但只有很少人 ... -
字符,字节和编码
2011-11-09 16:22 1191摘要:本文介绍了字符与编码的发展过程,相关概念的正确理解。 ... -
Java日期时间操作函数代码
2011-08-13 16:18 1214/** 日期类 * @date ... -
Log4J diy手册
2011-08-01 11:55 15111. Introduction 在开 ... -
深入分析 Java 中的中文编码问题
2011-07-11 17:12 1524几种常见的编码格式 ... -
BufferedImage to InputStream
2011-06-30 20:56 26121URL url = new URL("http:// ... -
Java打包指南-JAR文件包及jar命令详解
2011-06-15 15:54 9118命令行打war包 ja ... -
正则表达式
2011-06-14 17:35 1421匹配中文字符的正则表达式: [\u4e00-\u9fa5] ... -
svn 命令
2011-06-14 15:59 1010svn co svn+ssh://username@116.2 ... -
使用 jsoup 对 HTML 文档进行解析和操作
2011-06-10 10:32 1625jsoup 简介 Java 程序在解析 HTML 文 ... -
linux设置编码
2011-05-20 10:45 1456set character_set_client='utf ... -
HTML中include file标签的用法
2011-05-05 17:02 21461<!-- #include PathType = Fil ... -
下载 中文文件名乱码问题
2011-04-28 09:42 1234private String processFileName( ... -
Install Redis
2011-04-08 10:16 15081. Get wget http://redis.googl ...
相关推荐
在报表生成中,交叉报表是一种常用的报表类型,能够将数据按照行和列进行交叉处理,生成一个交叉表。以下是 JasperReport 中交叉报表的生成指南: 1. 设置 subDataSets 数据源 在 JasperReport 中,交叉报表需要...
在这个“水晶报表交叉报表设计”主题中,我们将深入探讨如何利用水晶报表来创建、定制和优化交叉报表。 首先,我们需要理解交叉报表的基本结构。交叉报表由行区域(Row Area)和列区域(Column Area)组成,行区域...
【ReportMachine 交叉报表 学生成绩表】是一款专业用于数据可视化和分析的工具,尤其在教育领域中,它能够高效地展示和解读学生的学习成绩。交叉报表是一种强大的数据分析技术,通过行列交叉的方式,可以清晰地揭示...
交叉报表,又称为透视表,用于以行列方式展示数据,通常包含汇总和总计功能,可以按行、列进行分组和计算。 1. **创建交叉报表**: - 在 IReport 中,新建一个报表并选择“交叉表”组件。 - 设定查询语句,确保它...
### 水晶报表交叉表知识点详解 #### 一、交叉表的概念与作用 **交叉表**是一种特殊类型的报表布局,主要用于展示多个维度上的数据对比分析。它通过将数据按照行和列的不同维度进行组织,形成一个二维表格,使得用户...
交叉报表,又称交叉表或透视表,是一种数据分析工具,能够帮助用户通过行列互换、聚合数据来洞察数据模式。 标题“用BIRT设计交叉报表的详细例子”意味着我们将探讨如何使用BIRT工具来创建一个复杂的交叉报表,并...
交叉报表,也被称为透视表或交叉表,是一种能够同时展示多个维度数据的报表形式。在交叉报表中,行和列的交汇点通常用于计算汇总值,例如总计、平均值或百分比。多层表头则进一步增强了这种表现力,它允许在行或列上...
iReport交叉报表详细知识点 iReport交叉报表是iReport JasperReports1.1.1版本中新增加的功能之一,它允许用户创建交叉报表,即使报表的行和列都是从数据库中读取的,而不是普通那种列固定行是从数据库中读取。下面...
RDLC交叉报表是其中一种特殊类型的报表,它能够在一个单一的视图中显示多维度的数据,例如按行和列交叉排列的数据,类似Excel中的数据透视表。 交叉报表的核心在于它的行列结构,允许用户根据多个字段进行分组和...
数据分层汇总交叉报表是数据分析领域中常见的需求,主要用于管理层获取多维度的业务洞察。在管理系统中,这种报表通常需要处理复杂的数据结构,以便展示不同层次的汇总信息。本文将探讨如何利用SQL语句实现这样的...
交叉报表,也称为透视表,允许数据以行列互换的方式显示,便于分析和比较。在用户管理和权限分配的场景下,可能通过交叉报表来直观地展示用户的角色分配,或者角色拥有的各种权限。例如,列可以代表用户,行可以代表...
在这个“CrossTab_demo百灵报表(BIRT)交叉表(演示二)”的压缩包中,我们主要探讨的是如何使用BIRT来创建和操作交叉表,这是一种强大的数据汇总和分析工具。 交叉表,又称透视表,是数据处理和分析中的常用手段。它...
4. 自定义样式:通过样式表,你可以调整交叉报表的颜色、字体、边框等视觉效果。 四、实际项目经验分享 1. 性能优化:在处理大量数据时,合理设置查询条件和缓存策略,以减少服务器负载。 2. HTML显示:ireport生成...
### iReport交叉报表自定义排序 #### 背景与问题描述 在处理复杂的报表设计时,特别是使用iReport工具创建交叉报表(Crosstab)的过程中,常常会遇到需要对数据进行特定排序的需求。默认情况下,交叉报表中的数据...
交叉报表(Cross-Tab Report)是其中一种特殊类型的报表,它允许用户以行列交错的方式查看数据,从而更容易发现模式和趋势。在商业智能和数据分析领域,交叉报表尤其受欢迎,因为它们能够有效地处理多维数据。 "asp...
BIRT(Business Intelligence and Reporting Tools)是Eclipse基金会下的一个开源报表系统,它提供了一整套工具,使得开发者能够利用API动态地创建和定制复杂的报表,包括交叉表(Cross Tab)。交叉表是一种数据汇总...
交叉报表在数据分析领域具有重要意义,它能帮助用户从多角度、多层次分析数据,提供丰富的透视表功能,以更直观的方式展示复杂的数据关系。 【描述】:“UAP培训_890(交叉报表).rar”描述简单明了,表明这是一个...
Cognos 列表和交叉表锁定表头功能是报表页面中的一种重要功能,能够提高报表的可读性和用户体验,提高报表的整体质量。 知识点: * Cognos BI 是一种商业智能软件,提供了报表、分析和数据挖掘等功能。 * HTML ...
本文介绍如何在iReport中设计柱状图和交叉表两种常用的报表格式。 首先介绍柱状图的画法。在进行柱状图设计之前,需要在数据库中建立数据表并填充数据。以手机销售数据为例,假设我们有一个名为phone_sale的表,它...