使用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();
}
}
猜你喜欢
- 基于SpringBoot+VUE+MYSQL的汽车租赁服务管理系统源码_C50495
- 基于SSM+MYSQL实现社区养老院服务系统_C50302
- 基于ssm+mysql实现的酒店管理系统源码下载_C5090
- 基于jsp+servlet+mysql实现的医院预约挂号管理系统_C50265
- 使用springboot+mysql实现在线报修管理系统_C50207
- 基于SSM+Mysql实现服装网上销售商城管理系统源码【java毕业设计】_C50453
- 基于Spring实现的实验课程管理系统包含实验室考勤成绩等_C50247
- 基于javaweb+mysql实现在线图书馆管理系统源码_C50384
- 基于SSM+VUE+SQLSERVER实现仓库管理系统_C50479
- 基于SSM实现高校学生管理系统(精简版)含论文_C50335
- 推荐 基于jsp+servlet实现毕业论文提交管理系统源码分享_C5047
- 推荐 基于jsp+servlet+mysql实现图书馆管理系统_C50338
- 推荐 使用Springboot+mysql项目工时统计系统毕业设计源码_50221
- 推荐 基于SSM+Mysql实现智慧社区管理系统源码【java毕业设计】_C50462
- 推荐 基于SSH简单用户登录注册功能案例代码
- 推荐 基于jsp新闻发布系统论文分享_L003
- 推荐 一个简单的SSM问卷调查管理系统_C50278
- 推荐 基于SSM+MYSQL实现校园招聘管理系统_C50409
- 推荐 基于SSM+MYSQL+LAYUI实现在线医院挂号系统_C50334
- 推荐 基于Java web(jsp+servlet+mysql)实现的汽车租赁平台系统_C50296