使用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实现简单的租车管理系统源码【java毕业设计】_C50426
- 基于Servlet+Mybatis车辆信息管理系统_C5103
- 基于javaweb实现鲜花商城管理系统前台部分源码_C50346
- 基于ssh+mysql实现大学毕业生就业信管理息系统源码【java毕业源码】_C50478
- 基于Java web(jsp+servlet)实现的拍卖管理系统前端及商品发布页面_C50252
- 基于SSM Mysql实现简单的员工信息增删改查案例源码_C50407
- 基于jsp+servlet+mysql实现校园自行车租赁管理系统_C50363
- 基于SSM学生确诊统计管理系统包含增删改查等_C5063
- 基于SSM+VUE+SQLSERVER实现仓库管理系统_C50479
- 使用jsp+servlet+mysql实现心理咨询服务平台项目源码下载_C50205
相关代码- 推荐 基于javaweb(jsp+servlet+mysql)实现宿舍报修管理系统源码_C50368
- 推荐 基于Springboot+mysql实现企业库存管理系统源码_C50371
- 推荐 基于SSH+mysql实现资产管理系统源码下载c5087
- 推荐 SSM+mysql实现简单垃圾分类管理系统源码_C50293
- 推荐 基于jsp+mysql实现的就业信息管理系统_C50263
- 推荐 基于JAVASWING实现财务收支管理案例代码_C50418
- 推荐 [JAVA毕业设计]基于SSH+mysql实现的物业车辆管理系统_C50287
- 推荐 基于Java web(jsp+servlet+mysql)实现学生教师信息管理系统源码_C50436
- 推荐 基于SSH+MYSQL实现超市订货管理系统源码_C50412
- 推荐 控制台实现JAVA新闻管理系统分角色管理_S7502
