本文简单研究使用java导出学生成绩表,使用到的导出Excel的技术为Apache poi,相关的技术可以查看我之前的文章。之前导出的Excel的格式为03版的xls,使用的jar为poi-3.10-FINAL-20140208.jar,本例导出07版的xlsx格式,使用的jar为poi-ooxml-3.10-FINAL-20140208.jar、poi-ooxml-schemas-3.10-FINAL-20140208.jar、dom4j-1.6.1.jar、xmlbeans-2.3.0.jar。总之,与Excel导出相关的jar有以下这些:

导出03版使用的是HSSF技术,导出07版使用的是XSSF技术,二者用法相近,在此不再赘述。

最终效果;

学生成绩表中需要计算总分,平均分和排名,当然,可以通过在数据库查询之后,直接将结果输出到Excel。本例使用poi提供的公式来解决上述问题,公式使用的简单介绍:

设置单元格格式为使用公式,并设置公式内容

cell = row.createCell(2);

// Create SUM formula

cell.setCellType(XSSFCell.CELL_TYPE_FORMULA);

cell.setCellFormula("SUM(C2:C3)" );

Excel全部组装完毕之后,进行计算

//计算公式

wb.getCreationHelper()

.createFormulaEvaluator()

.evaluateAll();

关于公式的具体内容为Excel的相关知识,在此不再赘述。

源代码:

package com.company.test;

import java.io.*;

import java.util.*;

import org.apache.poi.ss.util.CellRangeAddress;

import org.apache.poi.xssf.usermodel.*;

/**

* 导出学生成绩表

* <p>Title:StudentScore </p>

* <p>Description:TODO </p>

* <p>Company: </p>

* @author code legend

* @date 2016-11-1 下午9:11:25

*/

public class StudentScore

{

public static void main(String[] args)

throws IOException

{

//创建工作簿

XSSFWorkbook wb = new XSSFWorkbook();

//创建工作表

XSSFSheet sheet = wb.createSheet("成绩表");

for(int i=0;i<3;i++){

//设置列宽

sheet.setColumnWidth(i, 3000);

}

//创建行

XSSFRow row = sheet.createRow(0);

row.setHeightInPoints(30);//设置行高

//创建单元格

XSSFCell cell = row.createCell(0);

cell.setCellValue("学生成绩表");

//合并单元格

sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 7));

//创建行

XSSFRow row1 = sheet.createRow(1);

//标题信息

String[] titles = {"学号","姓名","语文","数学","英语","总分","平均分","排名"};

for(int i=0;i<titles.length;i++){

//创建单元格

XSSFCell cell1 = row1.createCell(i);

cell1.setCellValue(titles[i]);

}

//模拟数据,实际情况下String[]多为实体bean

List<String[]> list = new ArrayList<String[]>();

list.add(new String[]{"1","张三","81","91","81"});

list.add(new String[]{"2","李四","78","85","79"});

list.add(new String[]{"3","王五","69","78","92"});

list.add(new String[]{"4","赵六","72","88","86"});

list.add(new String[]{"5","宋七","83","96","69"});

list.add(new String[]{"6","刘八","77","71","90"});

//保留2位小数

XSSFCellStyle cellStyle = wb.createCellStyle();

XSSFDataFormat format= wb.createDataFormat();

cellStyle.setDataFormat(format.getFormat("0.00"));

//循环赋值

for(int i=0;i<list.size();i++){

//创建行

XSSFRow row2 = sheet.createRow(i+2);

//创建单元格学号

XSSFCell cell1 = row2.createCell(0);

cell1.setCellValue(list.get(i)[0]);

//创建单元格姓名

XSSFCell cell2 = row2.createCell(1);

cell2.setCellValue(list.get(i)[1]);

//创建单元格语文

XSSFCell cell3 = row2.createCell(2);

cell3.setCellValue(Integer.parseInt(list.get(i)[2]));

//创建单元格数学

XSSFCell cell4 = row2.createCell(3);

cell4.setCellValue(Integer.parseInt(list.get(i)[3]));

//创建单元格英语

XSSFCell cell5 = row2.createCell(4);

cell5.setCellValue(Integer.parseInt(list.get(i)[4]));

//创建单元格总分

XSSFCell cell6 = row2.createCell(5);

// Create SUM formula

cell6.setCellType(XSSFCell.CELL_TYPE_FORMULA);

cell6.setCellFormula("SUM(C"+(i+3)+":E"+(i+3)+")" );

//创建单元格平均分

XSSFCell cell7 = row2.createCell(6);

// Create AVERAGE formula

cell7.setCellType(XSSFCell.CELL_TYPE_FORMULA);

cell7.setCellFormula("AVERAGE(C"+(i+3)+":E"+(i+3)+")" );

cell7.setCellStyle(cellStyle);

//创建单元格排名

XSSFCell cell8 = row2.createCell(7);

// Create SUM formula

cell8.setCellType(XSSFCell.CELL_TYPE_FORMULA);

cell8.setCellFormula("RANK(F"+(i+3)+",F$3:F$"+(3+list.size()-1)+",0)" );

}

//计算公式

wb.getCreationHelper()

.createFormulaEvaluator()

.evaluateAll();

File file = new File("D://a.xlsx");

if(!file.exists()){

file.createNewFile();

}

FileOutputStream fileOut = new FileOutputStream(file);

wb.write(fileOut);

fileOut.close();

}

}

运行结果:

程序中对平均值保留了2位小数,使用到了XSSFCellStyle设置单元格格式,在之前的文章中使用到HSSFCellStyle,二者用法相近,详见《java导出excel之使用poi》、《java导出excel及下载的实现》。

用java输出学生信息表代码_使用java导出学生成绩表-excel成绩表相关推荐

  1. java商品信息管理系统代码_[源码分享]学生信息管理系统(管理员)

    我一直以为学生信息管理系统是烂大街的,网上一搜一大把的那种 毕竟这种项目是学完C语言之后都可以独立完成的项目,只有界面好看与否的问题 最近好多学生问学生信息管理系统的代码,估计是C语言大作业什么的.然 ...

  2. java当中有关循环的代码_有关Java循环的内容,编程中还是比较常用的,下面分享给大家几个循环的示例代码,练习一下。1、循环输出1到100之间所有能被3或能被4整除的数。pack...

    有关Java循环的内容,编程中还是比较常用的,下面分享给大家几个循环的示例代码,练习一下. 1.循环输出1到100之间所有能被3或能被4整除的数. package com.hz.loop02; /** ...

  3. java完成一个学生信息调查程序_利用Java设计一个简单的学生信息管理程序

    利用Java设计一个简单的控制台学生信息管理程序 此程序可作为课设的参考,其中信息存储于文件中. 创建了学生类Student,用于存储学号等的信息.创建StudentFunction类,用于实现诸如学 ...

  4. java写的学生信息查询系统_用JAVA写一个简易的学生信息管理系统

    前言:写这篇文章的目的: 为了以后复习方便,当你回头看自己的代码的时候不至于想不起你写下这段代码的思路: 慢慢锻炼自己总结的能力,养成习惯以后去写自己的技术博客,古人云,温故而知新 作为一个技术拓荒者 ...

  5. java学生请假天数代码_基于jsp的学生网上请假-JavaEE实现学生网上请假 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的学生网上请假, 该项目可用各类java课程设计大作业中, 学生网上请假的系统架构分为前后台两部分, 最终实现在线上 ...

  6. java 待在原页面 代码_现在java后台,只要修改一点点代码,前段页面就报500,必须重新登录才行?...

    哪怕是加一行注释,前段也一刷新也会报500错误,必须重新登录系统才行,以前的时候没问题呀? message description The server encountered an internal ...

  7. java图书信息添加代码_图书 - java代码库 - 云代码

    [java]代码库package com.mahe; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt. ...

  8. java关于泛型的实验代码_[改善Java代码]强制声明泛型的实际类型

    Arrays工具类有一个方法asList可以把一个变长参数或数组变成列表,但是它有一个缺点:它所生成的List长度是不可改变的,而这在我们的项目开发中很不方便. importjava.util.Arr ...

  9. java模拟摇摆小球程序代码_用java实现跳动的小球示例代码

    实现效果为一个小球接触左右侧时,会反向的运动. import javafx.application.Application; import javafx.event.ActionEvent; impo ...

最新文章

  1. dedeCMS修改文章更新发布时间问题
  2. 2017-2018-1 20155338 《信息安全系统设计基础》 第四周学习总结
  3. linux下的各种系统错误errno描述一览
  4. 2016年度最受欢迎的100个 Java 库
  5. PHP使用PDO方式的经验总结:连接 增删改查
  6. 你真的认真想过了吗?
  7. MODBUS通讯协议详解(基于485)
  8. Windows FFMPEG开发环境配置
  9. C++ class中的静态(static)成员
  10. js方法写在html中,在js中写html代码怎么写
  11. .net 实现Cookie跨域共享,单点登录SSO
  12. android 音乐资源获取失败,android – 获取嵌入式mp3文件嵌入式艺术失败
  13. 如何突破科研瓶颈?如何与导师自在相处?微软研究员们的读博心得
  14. “请别再说‘华商网不重视技术’”
  15. 小学教师计算机说课,浙江温州小学计算机教师资格认证说课稿
  16. MySQL中常见的函数常见的问题
  17. Oxygen XML Editor Professional文档的强大工具
  18. python判断是否为素数_python判断一个数是否为素数
  19. 系统全面讲解word中选择性粘贴命令
  20. ttl传输种过期_来自 202.112.36.253 的回复: TTL 传输中过期。解决思路

热门文章

  1. Java 联网五子棋(socket)
  2. MMA-mathematica绘图
  3. 个人支付收款方案-PayJS
  4. OpenCL简介-----OpenCL学习(一)
  5. 如何写hive的udf函数?
  6. python字符串格式时间转化为时间戳
  7. __FILE__显示全路径的问题
  8. SSM框架解决QQ邮箱激活535 Error: ÇëʹÓÃÊÚȨÂëµÇ¼¡£ÏêÇéÇë¿´及端口25被占用问题
  9. arcgis如何打开tif_详解如何使用ArcGIS生成高程点
  10. vs2017开发ActiveX(主讲OCX)(七)、方法