ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:4.29MB ,
资源ID:3164144      下载积分:20 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-3164144.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(java用poi从excel读取数据进行相关统计,jfreechart绘制图表.docx)为本站会员(dzzj200808)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

java用poi从excel读取数据进行相关统计,jfreechart绘制图表.docx

1、JAVA 用 POI 从 Excel 读取数据进行相关统计, JFreeChart 绘制图表代码大概三百行吧,不多。本来连接数据库做是个不错的选择,但是我刚刷了系统木有了又懒得装,从 txt 输入又感觉太 low,最后就作死选择了以前从未尝试过的从Excel 输入,并碰到了各种问题_(: )_比如 Cannot get a String value from a numeric cell 的异常错误,卡了我好久,直到无语地发现 POI 操作 Excel 时会无视Excel 里的单元格设置,自判数据类型,所以还要使用 setCellType.(*)实现步骤(1)我用 javax.swing.JF

2、ileChooser 类来显示文件对话框,让用户选择一个 Excel 文件。(2)使用 Apache POI API 从 Excel 文件中读取数据,对 Employee 类进行批量初始化。(3)实现公司员工收入的相关统计,这里我实现了人数统计、最大/最小工龄查找、最大/最小工资查找、男女比例、平均工资、平均年龄、平均工龄等。(4)建立 Dataset。将你所想要显示的数据都放到这个库中。(5)建立 JFreeChart 对象。将你的 dataset 填入到这个对象中。(6)处理 Chart 中文显示问题(7)设置各种 JFreeChart 的属性和效果。通过它提供的各种方法和接口设置相关的属

3、性。(8)用 JFreeChart 绘制图表,然后按照个人的需求进行执行。(9)写界面,以 swing 形式输出。测试截图(1)生成消息对话框,要求用户选择一个 Excel 文件,单击“确定”(2)生成文件选择器,我打开了存放在 D 盘 BUAA 文件夹里的 Employee.xls补充说明:这是文件 Employee.xls 的内容(3)进行相关统计,并通过消息对话框显示统计结果(4)询问用户是否生成统计图,如果点“取消”或“否”,运行完毕;如果点是,系统将生成统计图,以员工为横轴,以年龄、工龄、工资三项数值为纵轴。图表的显示效果会根据窗口大小自适应,改变横纵轴的比例尺。下面是窗口最大化的效

4、果程序清单123456789public class Employee String ID;String name;String sex;double age;double workAge;double sal;public void setID(String ID) 1011121314151617181920212223242526272829303132this.ID = ID;public void setName(String name) this.name = name;public void setSex(String sex) this.sex = sex;public voi

5、d setAge(double age) this.age = age;public void setWorkAge(double workAge) this.workAge = workAge;public void setSal(double sal) this.sal = sal;一共有两个:Employee.Java 和 EmployeeStatic.javaEmployeeStatic.javaimportjava.awt.RenderingHints;importjava.io.FileInputStream;importjava.util.ArrayList;import jav

6、a.util.List;importjavax.swing.JFileChooser;importjavax.swing.JOptionPane;/org.apache.poiimportorg.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFWorkbook;importorg.apache.poi.ss.usermodel.Cell;importorg.apache.poi.ss.usermodel.Row;import org.apache.poi.xssf.usermodel.XS

7、SFSheet;import org.apache.poi.xssf.usermodel.XSSFWorkbook;/org.jfreeimportorg.jfree.chart.ChartFactory;importorg.jfree.chart.ChartFrame;importorg.jfree.chart.JFreeChart;importorg.jfree.chart.axis.CategoryAxis;importorg.jfree.chart.axis.ValueAxis;importorg.jfree.chart.plot.CategoryPlot;importorg.jfre

8、e.chart.plot.PlotOrientation;importorg.jfree.chart.title.TextTitle;importorg.jfree.data.category.CategoryDataset;importorg.jfree.data.category.DefaultCategoryDataset;importjava.awt.Font; public class EmployeeStatics public static void main(String args) / TODO Auto-generated method stubJOptionPane.sh

9、owMessageDialog(null,“n 您好,我是智能机器人小紫nn“+ “很高兴为您提供员工数据统计分析服务nn“+ “请选择一个 Excel 文件 _nn“,“选择 Excel 文件“,JOptionPane.INFORMATION_MESSAGE );ArrayList Employees = null;/从 Excel 文件读取数据try Employees = ReadFileUsingFileChooser(); catch (Exception e) / TODO Auto-generated catch blocke.printStackTrace();/人数统计 in

10、t n = Employees.size();/最大最小工资、工龄、工资初始化int maxA = 0;int minA = Integer.MAX_VALUE;int maxWA = 0;int minWA = Integer.MAX_VALUE;int maxS = 0;int minS = Integer.MAX_VALUE;/男女性别人数int M = 0;int FM = 0;double sumS, sumA, sumWA, avgS, avgA, avgWA, MFM;sumS = sumA = sumWA = 0;/遍历实现相关统计for (Employee e : Emplo

11、yees) if(e.age maxA)maxA = (int) e.age;if(e.age maxWA)maxWA = (int) e.workAge;if(e.workAge maxS)maxS = (int) e.sal;if(e.sal ReadFileUsingFileChooser()throws Exception / TODO Auto-generated method stubJFileChooser fileChooser = new JFileChooser();ArrayList temp = new ArrayList();if (fileChooser.showO

12、penDialog(null) =JFileChooser.APPROVE_OPTION) java.io.File file = fileChooser.getSelectedFile();FileInputStream fileIn = new FileInputStream(file);/根据指定的文件输入流导入 Excel 从而产生 Workbook 对象HSSFWorkbook wb0 = new HSSFWorkbook(fileIn);/获取 Excel 文档中的第一个表单HSSFSheet sht0 = wb0.getSheetAt(0);/对 Sheet 中的每一行进行迭代i

13、nt r;int rowNum = sht0.getPhysicalNumberOfRows();for (r = 1; r Employees) DefaultCategoryDataset dataset = new DefaultCategoryDataset(); for (Employee e : Employees)dataset.addValue(e.workAge, “工龄“, e.name); dataset.addValue(e.sal, “工资“, e.name); dataset.addValue(e.age, “年龄“, e.name); return dataset

14、; /解决图表汉字显示问题private static void processChart(JFreeChart chart) CategoryPlot plot = chart.getCategoryPlot(); CategoryAxis domainAxis = plot.getDomainAxis(); ValueAxis rAxis = plot.getRangeAxis(); chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_

15、OFF); TextTitle textTitle = chart.getTitle(); textTitle.setFont(new Font(“宋体“, Font.PLAIN, 20); domainAxis.setTickLabelFont(new Font(“sans-serif“, Font.PLAIN, 11); domainAxis.setLabelFont(new Font(“宋体“, Font.PLAIN, 12); rAxis.setTickLabelFont(new Font(“sans-serif“, Font.PLAIN, 12); rAxis.setLabelFon

16、t(new Font(“宋体“, Font.PLAIN, 12); chart.getLegend().setItemFont(new Font(“宋体“ , Font.PLAIN, 12);/ renderer.setItemLabelGenerator(newLabelGenerator(0.0); / renderer.setItemLabelFont(newFont(“宋体“, Font.PLAIN, 12); /renderer.setItemLabelsVisible(true); Employee.javapublic class Employee String ID;Strin

17、g name;String sex;double age;double workAge;double sal;public void setID(String ID) this.ID = ID;public void setName(String name) this.name = name;public void setSex(String sex) this.sex = sex;public void setAge(double age) this.age = age;public void setWorkAge(double workAge) this.workAge = workAge;public void setSal(double sal) this.sal = sal;

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报