使用POI实现基于Excel的考试成绩导入及分析导出
摘要:
详细描述:
本实验要求根据已有的学生成绩单,完成对学生期末成绩的统计、分析功能。已知学生成绩已经录入到具有固定格式的Excel文档中(文档格式见成绩单.xls),需要通过Java程序计算出学生的总评成绩(总评成绩=平时成绩*0.05+实验成绩*0.55+期末成绩*0.4)中90分-100分、80分-89分、70分-79分、60分-69分、小于60分这几个分数段的学生人数和比例、成绩的平均值、最高分和最低分,并将这些结果插入到给出的成绩分析.xls文件中
(1)掌握在程序中引入第三方jar包的方法
(2)通过Apache POI库实现对Excel文档的读、写操作
准备工作
在进行此实验前首先须准备好Apache POI相关文档压缩包:poi-bin-4.1.0-20190412.zip,
实验步骤
新建Java Project,并将Apache POI的jar包引入到项目中
(1)在Eclipse中的项目名称上右击,选择New->Folder,新建一个lib文件夹,将poi-bin-4.1.0-20190412.zip压缩包中用到的所有jar包拷贝到lib文件夹中,并在所有jar包上右击,选择Build Path->Add To Build Path
在程序中读取学生的各项成绩,并计算出每个学生的总评成绩 (40分)
学生的总评成绩可以存储在一个double类型的数组中。假定在D盘目录下有一个文件名为test.xls的Excel文件,使用POI读取该Excel文档的简单示例代码如下:(如需完成实验要求的读取所有学生的各项成绩,具体方法需要自己查阅POI官方文档)
public static void readExcel() {
try {
// 获得Excel文件输入流
FileInputStream in = new FileInputStream("D:\\test.xls");
// 创建对Excel工作簿文件的引用
HSSFWorkbook workbook = new HSSFWorkbook(in);
// 创建对工作表的引用。
// 得到Excel工作簿的第一页,即excel工作表对象
// 在Excel文档中,第一张工作表的索引是0
HSSFSheet sheet = workbook.getSheetAt(0);
// 得到工作表中第一行的引用,第一行的索引是0
HSSFRow row = sheet.getRow(0);
//得到某一行的第一个单元格,单元格的索引也是从0开始
HSSFCell cell = row.getCell(0);
//cell.getStringCellValue()就是取所在单元的字符串类型的值
//如果要获得数字类型的值可以使用getNumericCellValue()方法
System.out.println("第一行第一个单元格的内容是: " +
cell.getStringCellValue());
in.close();// 关闭文件输入流
} catch (Exception e) {//上面程序正确时,不会执行此处代码
System.out.println("出错了!");
e.printStackTrace();
}
}
计算所有学生总评成绩分布情况(20分)
根据4.2中读取成绩单文件后得到的double类型的数组,计算出学生总评成绩中90分-100分、80分-89分、70分-79分、60分-69分、小于60分这几个分数段的学生人数和比例、成绩的平均值、最高分和最低分,结果中存在小数部分的要保留两位小数。
生成成绩分析Excel文档(40分)
将4.3步得到的结果输出到Excel文档中。假定在D盘目录下有一个文件名为test1.xls的Excel文件,已知使用POI写入Excel文档的核心代码如下:
public static void writeExcel() {
try {
// 获得Excel文件输入流
FileInputStream in = new FileInputStream("D:\\test1.xls");
// 创建excel工作簿对象
HSSFWorkbook wb = new HSSFWorkbook(in);
// 获得excel中第一个工作页对象,索引从0开始
HSSFSheet sheet = wb.getSheetAt(0);
// 创建工作表中一行,索引从0开始
HSSFRow row1 = sheet.createRow(0);
// 创建工作表中单元格,索引从0开始
HSSFCell cell1_1 = row1.createCell(0);
// 设置单元格内容
cell1_1.setCellValue("内容");
HSSFCell cell1_2 = row1.createCell(1);
cell1_2.setCellValue(1);
// 获得Excel文件输出流
FileOutputStream out = new
FileOutputStream("D:\\test2.xls");
// 输出excel
wb.write(out);
// 关闭文件输入、输出流
in.close();
out.close();
} catch (Exception e) {
// 上面程序正确时,不会执行此处代码
System.out.println("出错了!");
e.printStackTrace();
}
}
猜你喜欢
- 基于SSM+Mysql实现图书商城管理系统_C50305
- 基于Springboot+mysql实现javaweb在线点餐系统_C50236
- 基于jsp+servlet实现的游戏交易平台带支付宝沙箱支付毕业设计源码下载_c5089
- SSM+maven+mysql实现简单的图书查询及预订系统_C50213
- 完整可运行的JAVAWEB网上书城源码含论文文档
- 基于SSM+MYSQL实现集中供热管理系统_C50316
- 基于ssm+mysql茶叶交易推荐管理系统(包含用户相似度推荐算法)_C50466
- SSM+maven+mysql实现登录及课程信息增删改查代码C50232
- 基于SSM+Mysql实现社区疫情信息共享系统源码【java毕业设计】_C50500
- 基于jsp+servlet+bootstrap实现的图书管理系统源码分享C5036
相关代码- 推荐 【java毕业设计】基于ssm+vue实现微信小程序选课管理系统_C50476
- 推荐 基于javaweb+mysql实现学院事务专家表决系统源码_C50356
- 推荐 基于java简易版图书馆里系统无数据库版
- 推荐 [javaweb毕业设计]基于jsp+servlet实现报修管理系统_C50274
- 推荐 基于SSM+mysql实现实习报告在线提交管理系统_C50260
- 推荐 基于javaweb实现天气预报管理系统源码_C50353
- 推荐 基于Springboot+mysql实现javaweb在线点餐系统_C50236
- 推荐 基于SSM+MYSQL实现在线教材预约管理系统毕业设计源码_C50209
- 推荐 基于springboot+mysql实现图书商城管理系统_C50273
- 推荐 基于SSM实现的药品管理系统带用户管理等C5026
