![【腾讯云】星星海SA2云服务器,1核2G首年99元起,高性价比首选](/images/1040x100.jpg)
使用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实现前后端分离的智能考勤系统源码_C50489
- 基于javaweb实现教室预约管理系统毕业设计源码+论文_C50231
- 基于jsp+servlet+mysql宿舍管理系统源码_C5065
- 基于Java web(jsp+servlet+mysql)实现用户信息增删改查源码_C50416
- 基于SSM+Mysql实现医院住院信息管理系统源码【java毕业设计】_C50445
- 基于java简易版图书馆里系统无数据库版
- 基于SSM Mysql实现考研座位预约管理系统【java毕业设计】_C50425
- SSM+maven+mysql实现登录及课程信息增删改查代码C50232
- [java毕业设计源码]基于Springboot+mysql社区疫情管理系统_C50345
- 使用ssm+mysql实现学生登录注册增删改查源码下载_C50203
![](/images/cattle_ico.png)
- 推荐 基于javaweb停车场管理系统源码论文C5003
- 推荐 [java毕业设计]基于SSM框架实现的校园二手物品交易系统_C50309
- 推荐 基于jsp+servlet+mysql实现图书馆管理系统_C50338
- 推荐 基于SSM+mysql实现企业人力资源管理系统毕业设计源码_C50381
- 推荐 基于SSM+Mysql实现学生综合测评管理系统源码【java毕业设计】_C50439
- 推荐 基于Java web(springboot+layui+mysql)实现的医院药品管理系统_C50351
- 推荐 使用JSP+Servlet+Mysql实现商城系统登录注册及首页展示_C22001
- 推荐 基于jsp+servlet+bootstrap实现的图书管理系统源码分享C5036
- 推荐 javaweb实现简单的登录注册及修改密码功能案例代码_C50414
- 推荐 基于Springboot+mysql实现学生资助管理系统源码【java毕业设计】_C50450