
使用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();
}
}
猜你喜欢
- 【Java毕业设计】基于SSM+Mysql实现高校就业管理系统_C50275
- 基于SSM+MYSQL实现在线教材预约管理系统毕业设计源码_C50209
- 基于SSM实现的外卖点餐系统适应手机端源码分析_C5043
- 基于ssm+mysql实现物业小程序管理系统_C50491
- 基于Servlet+jsp实现的广州酒家管理系统源码免费分享F302
- 基于JAVAWEB实现计算练习系统自动生成联系题_C50214
- 基于springboot+mysql实现健康绿色食品在线销售商城系统_C50385
- 基于Java web(jsp+servlet+mysql)实现简单的网上商城管理系统源码_C50452
- 基于jsp+servlet+mysql图书管理系统包含借还书等_C50304
- 基于jsp+mysql作品参赛管理系统源码_C50362

- 推荐 二手房产交易网模板前端页面HTML分享_C50288
- 推荐 基于Springboot+mysql实现评教管理系统_C50318
- 推荐 基于Springboot项目众筹管理系统源码下载c5085
- 推荐 基于SSM实现的药品管理系统带用户管理等C5026
- 推荐 基于SSM+Mysql实现学生成绩管理系统源码【java毕业设计】_C50492
- 推荐 基于servlet+mybatis实现简单的食堂点餐系统_C50277
- 推荐 基于JAVAWEB(jsp+servlet)实现客运专线管理查询系统_C50233
- 推荐 基于SSM+Mysql实现儿童疫苗预约接种管理系统_C50315
- 推荐 【JAVA毕业设计】基于javaweb实现在线共享自习室座位预定系统_C50284
- 推荐 [java毕业设计]基于SSM+Mysql开发的在线培训机构管理系统_C50283