新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1、首先打开电脑,并点击主页面上方的java。
成都创新互联是一家集网站建设,屏山企业网站建设,屏山品牌网站建设,网站定制,屏山网站建设报价,网络营销,网络优化,屏山网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
2、其次进入主页面,选择数据量大的报表。
3、最后点击右上角的工具栏,选择多维度排序和统计按钮即可。
使用 JFreeChart 生成各种样式的图表
限于篇幅的问题我们在这里只实现两种常用的图表,其他类型图表读者可以触类旁通。我们先给出柱状图的实现,饼图的实现再来跟柱状图进行比较。
1 柱状图
package lius.chart.demo;
import java.io.*;
import org.jfree.data.*;
import org.jfree.chart.*;
import org.jfree.chart.plot.*;
/**
* 该类用于演示最简单的柱状图生成
* @author Winter Lau
*/
public class BarChartDemo {
public static void main(String[] args) throws IOException{
CategoryDataset dataset = getDataSet2();
JFreeChart chart = ChartFactory.createBarChart3D(
"水果产量图", // 图表标题
"水果", // 目录轴的显示标签
"产量", // 数值轴的显示标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例(对于简单的柱状图必须是 false)
false, // 是否生成工具
false // 是否生成 URL 链接
);
FileOutputStream fos_jpg = null;
try {
fos_jpg = new FileOutputStream("D:\\fruit.jpg");
ChartUtilities.writeChartAsJPEG(fos_jpg,100,chart,400,300,null);
} finally {
try {
fos_jpg.close();
} catch (Exception e) {}
}
}
/**
* 获取一个演示用的简单数据集对象
* @return
*/
private static CategoryDataset getDataSet() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, null, "苹果");
dataset.addValue(200, null, "梨子");
dataset.addValue(300, null, "葡萄");
dataset.addValue(400, null, "香蕉");
dataset.addValue(500, null, "荔枝");
return dataset;
}
/**
* 获取一个演示用的组合数据集对象
* @return
*/
private static CategoryDataset getDataSet2() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, "北京", "苹果");
dataset.addValue(100, "上海", "苹果");
dataset.addValue(100, "广州", "苹果");
dataset.addValue(200, "北京", "梨子");
dataset.addValue(200, "上海", "梨子");
dataset.addValue(200, "广州", "梨子");
dataset.addValue(300, "北京", "葡萄");
dataset.addValue(300, "上海", "葡萄");
dataset.addValue(300, "广州", "葡萄");
dataset.addValue(400, "北京", "香蕉");
dataset.addValue(400, "上海", "香蕉");
dataset.addValue(400, "广州", "香蕉");
dataset.addValue(500, "北京", "荔枝");
dataset.addValue(500, "上海", "荔枝");
dataset.addValue(500, "广州", "荔枝");
return dataset;
}
}
2 饼图
package lius.chart.demo;
import java.io.*;
import org.jfree.data.*;
import org.jfree.chart.*;
/**
* 用于演示饼图的生成
* @author Winter Lau
*/
public class PieChartDemo {
public static void main(String[] args) throws IOException{
DefaultPieDataset data = getDataSet();
JFreeChart chart = ChartFactory.createPie3DChart("水果产量图", // 图表标题
data,
true, // 是否显示图例
false,
false
);
// 写图表对象到文件,参照柱状图生成源码
}
/**
* 获取一个演示用的简单数据集对象
* @return
*/
private static DefaultPieDataset getDataSet() {
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("苹果",100);
dataset.setValue("梨子",200);
dataset.setValue("葡萄",300);
dataset.setValue("香蕉",400);
dataset.setValue("荔枝",500);
return dataset;
}
}
3将生成的图表移到浏览器上
package lius.chart.demo;
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.HttpServlet;
import org.jfree.data.*;
import org.jfree.chart.*;
/**
* 演示通过 servlet 直接输出图表
* @author Winter Lau
*/
public class ChartDemoServlet extends HttpServlet {
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException
{
res.setContentType("image/jpeg");
DefaultPieDataset data = getDataSet();
JFreeChart chart = ChartFactory.createPie3DChart("水果产量图",
data,
true,
false,
false
);
ChartUtilities.writeChartAsJPEG(res.getOutputStream(),
100,chart,400,300,null);
}
/**
* 获取一个演示用的简单数据集对象
* @return
*/
private static DefaultPieDataset getDataSet() {
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("苹果",100);
dataset.setValue("梨子",200);
dataset.setValue("葡萄",300);
dataset.setValue("香蕉",400);
dataset.setValue("荔枝",500);
return dataset;
}
}
4高级主题
很多情况我们不仅仅要求可以在浏览器上显示一个图表,我们更需要客户可以直接在图表上做一下交互的操作,例如获取信息提示,点击图表某个部分进行更详细信息的展示等等。例如前面生成的简单柱状图,用户需要在看到柱状图后点击某种水果例如是苹果即可看到各个地区苹果产量的情况。为此就要求该图形具有交互操作的功能。在 HTML 中为了让一个图像具有可交互的功能就必须给该图像定义一个 Map 对象。下表节选一段具有该功能的 HTML 代码:
MAP NAME="chartMap"
AREA SHAPE="RECT" COORDS="81,15,126,254" href="?series=0category=100"
title="100 = 7,048"
onclick="javascript:clickChart('100');return false;"
AREA SHAPE="RECT" COORDS="143,27,188,255" href="?series=0category=200"
title="200 = 6,721"
onclick="javascript: clickChart ('200');return false;"
AREA SHAPE="RECT" COORDS="205,54,250,255" href="?series=0category=300"
title="300 = 5,929"
onclick="javascript: clickChart ('300');return false;"
AREA SHAPE="RECT" COORDS="267,85,312,255" href="?series=0category=400"
title="400 = 5,005"
onclick="javascript: clickChart ('400');return false;"
AREA SHAPE="RECT" COORDS="329,17,374,255" href="?series=0category=Diet"
title="Diet = 7,017" onclick="javascript:
clickChart ('Diet');return false;"
/MAP
由此就产生了一个问题:如果根据一个图像来生成对应的 MAP 对象。我们回头看看刚才的代码,在创建一个图表对象时候有两个参数,我们举柱状图的例子来讲这两个参数就是 ChartFactory. createBarChart3D 方法中的最后两个参数,这两个参数的类型都是布尔值。这两个参数意思分别是:是否创建工具提示 (tooltip) 以及是否生成 URL。这两个参数分别对应着 MAP 中一个 AREA 的 title 属性以及 href 属性。
可是我想知道的是怎么来产生这个 MAP 啊!哈哈,不要着急,JFreeChart 已经帮我们做好生成 MAP 对象的功能。为了生成 MAP 对象就要引入另外一个对象:ChartRenderingInfo。因为 JFreeChart 没有直接的方法利用一个图表对象直接生成 MAP 数据,它需要一个中间对象来过渡,这个对象就是 ChartRenderingInfo。
把数据库中需要的数据处理后做成可视化图表,根据不同需求可以做成不同形式的图表,节省时间,效果比较好,报表软件国外的话水晶报表,SAP公司的商业报表工具,作为SAP“集团”下的报表组件模块。10年事前盛行一时,后被SAP收购。但水晶报表(Crystal Report)在理论上只支持单数据集,对多集的支持依赖于数据库的运算能力(叉乘与联合等或写存储过程),多库一般难以支持。
国内的话FineReport,目前国内报表软件领域发展最成熟也是市场份额最高的。IDC的报告里,17年甚至超过SAP,IBM,在这个细分领域,也是Gartner的BI选型市场指南里唯一推荐的报表工具。零代码开发,类似excel的设计方式,上手简单。尤其数据字典、实际值和显示值等的设计更是切入快速开发的要害,这些放在别的语言和体系下往往要大量代码才能实现且频繁需要的功能放在FineReport里却只是几个操作的事情。移动端报表+可视化大屏。
其实直接把要统计的字数放在一个字符串里就行了string str = "";
然后再用string的length方法就可以统计字符串长度了。
string str = "xxxxx";
int strlen = str.length();
system.out.print(strlen);
打印出来的数字就是所输入的字数(这里是包括标点符号的,如果要去标点空格可以用正则表达式)
java本身没有操作excel的工具,需要第三方的jar包,用jxl就可以,代码入下。
jxl你上百度搜索后下载就可以,简单易用,不懂追问。
public boolean exportExcel(HttpServletResponse response,Listcityinfo list)
{
try
{
OutputStream os = response.getOutputStream();// 取得输出流
response.reset();// 清空输出流
response.setHeader("Content-disposition", "attachment; filename=fine.xls");// 设定输出文件头
response.setContentType("application/msexcel");// 定义输出类型
WritableWorkbook wbook = Workbook.createWorkbook(os); // 建立excel文件
String tmptitle = "标题"; // 标题
WritableSheet wsheet = wbook.createSheet("详细信息表", 0); // sheet名称
WritableSheet wsheet = wbook.createSheet("性别统计表", 1); // sheet名称
WritableSheet wsheet = wbook.createSheet("证件类型统计表", 2); // sheet名称
// 设置excel标题
WritableFont wfont = new WritableFont(WritableFont.ARIAL, 16,WritableFont.BOLD,
false,UnderlineStyle.NO_UNDERLINE,Colour.BLACK);
WritableCellFormat wcfFC = new WritableCellFormat(wfont);
wcfFC.setBackground(Colour.AQUA);
wsheet.addCell(new Label(1, 0, tmptitle, wcfFC));
wfont = new jxl.write.WritableFont(WritableFont.ARIAL, 14,WritableFont.BOLD,
false, UnderlineStyle.NO_UNDERLINE,Colour.BLACK);
wcfFC = new WritableCellFormat(wfont);
// 开始生成主体内容
wsheet.addCell(new Label(0, 2, "具体内容"));
for(int i=0;ilist.size();i++) br=""{
wsheet.addCell(new Label(0, i+3, "");
wsheet.addCell(new Label(1, i+3,"");
}
// 主体内容生成结束
wbook.write(); // 写入文件
wbook.close();
os.close(); // 关闭流
return true;
}
catch(Exception ex)
{
ex.printStackTrace();
return false;
}
}
可以用FineReport报表软件实现。finereport是纯java软件,类excel设计模式,是一款功能极其牛掰的表格工具,可与数据库直接对接(一般的数据库,Oracle,SqlServer,MySql,DB2,Sybase,Informix等都支持),文本数据直接导入当然也支持,企业级额应用中包括设置定时报表、自定汇总数据发送邮件、报表权限分配、决策平台搭建等,因为是专业的报表软件,功能很强大,其实很多业内人士都在用这款软件,另外几乎不用自己编写代码,所以新手很容易上手使用。应该会比较适合您的,满意的话可以采纳的哦,谢谢了