1:所需jar包

2:Mysql数据库表内容如下:

3:代码结构如下:

(1)User.java

public class User {
private int id;
private String name;
private String no;
private String nativePlace;
private String edu;
private Double math;
private Double computer;
private Double english;
private Double sumcount;
private Double avgcount; //setter-getter ...
}

(2)JdbcUtil.java

public class JdbcUtil {

    private static final String URL = "jdbc:mysql://localhost:3306/test";
private static final String USER = "root";
private static final String PASSWORD = "mysql"; private JdbcUtil() {
} static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException ex) {
Logger.getLogger(JdbcUtil.class.getName()).log(Level.SEVERE, null, ex);
}
} public static Connection getConnection() throws Exception {//建立连接
return DriverManager.getConnection(URL, USER, PASSWORD);
} public static void free(ResultSet rs, Statement st, Connection conn) {//释放资源
try {
if (rs != null) {
rs.close();
}
} catch (SQLException ex) {
Logger.getLogger(JdbcUtil.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
if (st != null) {
st.close();
}
} catch (SQLException ex) {
Logger.getLogger(JdbcUtil.class.getName()).log(Level.SEVERE, null, ex);
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException ex) {
Logger.getLogger(JdbcUtil.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
}
}

(3)UserService.java

public class UserService {

    public static List<User> getUserList(){
User user;
List<User> list = new ArrayList<>();
String sql = "select id,name,no,nativeplace,edu,math,computer,english,sumcount,avgcount from t_user";
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
conn = JdbcUtil.getConnection();
ps = conn.prepareStatement(sql);
rs = ps.executeQuery(); while(rs.next()){
user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
user.setNo(rs.getString("no"));
user.setNativePlace(rs.getString("nativeplace"));
user.setEdu(rs.getString("edu"));
user.setMath(rs.getDouble("math"));
user.setComputer(rs.getDouble("computer"));
user.setEnglish(rs.getDouble("english"));
user.setSumcount(rs.getDouble("sumcount"));
user.setAvgcount(rs.getDouble("avgcount")); list.add(user);
}
} catch (Exception ex) {
Logger.getLogger(UserService.class.getName()).log(Level.SEVERE, null, ex);
}finally{
JdbcUtil.free(rs, ps, conn);
}
return list;
} }

(4)Poitest.java

public class Poitest {

    /**
* @param args the command line arguments
*/
public static void main(String[] args) {
InputStream inputStream = null;
OutputStream outputStream =null;
try {
inputStream = new FileInputStream(new File("E:\\hello_temp.xls"));
outputStream = new FileOutputStream(new File("E:\\hello1.xls")); writeToExcelByTemp2(inputStream,outputStream); System.out.println("成功生成");
} catch (FileNotFoundException ex) {
Logger.getLogger(Poitest.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(Poitest.class.getName()).log(Level.SEVERE, null, ex);
}finally{
if(null!=outputStream){
try {
outputStream.close();
} catch (IOException ex) {
Logger.getLogger(Poitest.class.getName()).log(Level.SEVERE, null, ex);
}
}
if(null!=inputStream){
try {
inputStream.close();
} catch (IOException ex) {
Logger.getLogger(Poitest.class.getName()).log(Level.SEVERE, null, ex);
}
}
} } /**
* 根据模版生成Excel
* @param inputStream
* @param outputStream
* @throws IOException
*/
public static void writeToExcelByTemp2(InputStream inputStream, OutputStream outputStream) throws IOException{
List<User> list = UserService.getUserList();
int length = list.size();
//New Workbook
Workbook wb = new HSSFWorkbook(inputStream); //New Sheet
Sheet sheet = wb.getSheetAt(0); int curRowIndex = 0;
for(int rowIndex=1; rowIndex<=length;rowIndex++){
curRowIndex = rowIndex;
//获取一行,如果为空则新建
Row row = sheet.getRow(rowIndex);
if(row == null){
row = sheet.createRow(rowIndex);
} User user = list.get(rowIndex-1);
//根据user的对象个数创建列数
for(int cellNum=0; cellNum<10;cellNum++){
Cell cell = row.getCell(cellNum);
if(cell==null){
cell = row.createCell(cellNum);
}
switch(cellNum){
case 0:
cell.setCellValue(user.getId());
break;
case 1:
cell.setCellValue(user.getName());
break;
case 2:
cell.setCellValue(user.getNo());
break;
case 3:
cell.setCellValue(user.getNativePlace());
break;
case 4:
cell.setCellValue(user.getEdu());
break;
case 5:
cell.setCellValue(user.getMath());
break;
case 6:
cell.setCellValue(user.getComputer());
break;
case 7:
cell.setCellValue(user.getEnglish());
break;
case 8:
cell.setCellFormula("SUM(F"+(rowIndex+1)+":H"+(rowIndex+1)+")");
break;
case 9:
cell.setCellFormula("I" + (rowIndex+1) +"/3");
break;
}
}
} curRowIndex++; Row row = sheet.createRow(curRowIndex);
Cell cell0 = row.createCell(0);
cell0.setCellValue("总计");
Cell cell5 = row.createCell(5);
cell5.setCellFormula("SUM(F2:"+"F"+(curRowIndex)+")");
Cell cell6 = row.createCell(6);
cell6.setCellFormula("SUM(G2:"+"G"+(curRowIndex)+")");
Cell cell7 = row.createCell(7);
cell7.setCellFormula("SUM(H2:"+"H"+(curRowIndex)+")");
Cell cell8 = row.createCell(8);
cell8.setCellFormula("SUM(I2:"+"I"+(curRowIndex)+")");
Cell cell9 = row.createCell(9);
cell9.setCellFormula("AVERAGE(J2:"+"J"+(curRowIndex)+")"); wb.write(outputStream);
}
}

Excel模版:

生成结果:

POI3.10 根据Excel模版导出数据测试的更多相关文章

  1. JAVA实现Excel导出数据(以写好的Excel模版导出)

    工作中经常会有将后台数据以Excel导出的功能. 简单的方法有将response的contentType设置为application/vnd.ms-excel: 或在JSP页面直接设置成: <% ...

  2. [poi使用]使用excel模版导出excel

    ​ Apache POI是基于Office Open XML标准(OOXML)和Microsoft的OLE 2复合文档格式(OLE2)处理各种文件格式的开源项目.简而言之,您可以使用Java读写MS ...

  3. POI3.10读取Excel模板填充数据后生成新的Excel文件

    private final DecimalFormat df = new DecimalFormat("#0.00"); public void test(){ String fi ...

  4. (6) 如何用Apache POI操作Excel文件-----POI-3.10的一个和注解(comment)相关的另外一个bug

    如果POI-3.10往一个工作表(sheet)里面插入数据的话,需要注意了,其有一个不太被容易发现的bug. 被插入的工作表(sheet)里面的单元格没有包含任何的注解(comment)的时候,插入一 ...

  5. jxls使用模版导出Excel

    /**     * 使用模版导出Excel     */    @SuppressWarnings({ "unchecked", "deprecation" } ...

  6. java+jxls利用excel模版进行导出

    大多时候会出现需要导出excel的功能,利用poi可以实现简单的导出,可以说poi的功能非常强大可以做到细节的定制化操作,但相对于在office操作excel,利用poi完全生成excel会显得非常复 ...

  7. 按模版导出Excel

    实现效果: excel模版: ExcelHandle.java package com.common.utils; import java.io.File; import java.io.FileIn ...

  8. NPOI的使用Excel模板导出

    private string ExportScMeeting(DataTable source) { string templateFile = Server.MapPath(@"Excel ...

  9. C#巧用Excel模版变成把Table打印出来

    将一个做好的Excel模版,通过程序填上数据然后打印出来这个需求有两种方法一种是通过代码打开Excel模版然后填入数据然后再打印. 第二种方法就是我将要介绍的 1.将Excel设置好格式另存为HTML ...

随机推荐

  1. java classpath import package 机制 @Java的ClassPath, Package和Jar

    java classpath import package 机制   從一個簡單的例子談談package與import機制 基本原則:為什麼需要將Java文件和類文件切實安置到其所歸屬之Package ...

  2. CF 584B Kolya and Tanya

    题目大意:3n个人围着一张桌子,给每个人发钱,可以使1块.2块.3块,第i个人的金额为Ai.若存在第个人使得Ai + Ai+n + Ai+2n != 6,则该分配方案满足条件,求所有的满足条件的方案数 ...

  3. yum 配置详解(转发)

    一.yum 简介 yum,是Yellow dog Updater, Modified 的简称,是杜克大学为了提高RPM 软件包安装性而开发的一种软件包管理器.起初是由yellow dog 这一发行版的 ...

  4. Static用法

    一.Static全局变量和全局变量的区别 1)全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量.全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式. 这两者在存储 ...

  5. 【转】TI-Davinci开发系列之六CCS5.2调试Linux内核

    上转博文<TI-Davinci开发系列之五CCS5.2使用gdbserver远程调试应用程序> 使用CCS5.2远程调试内核时,只需导入Linux内核源码,而不需要编译内核,也就不会用到交 ...

  6. 分析linux下的编译环境

    不论是windows下的程序,还是linux下的程序,开发环境都离不开三个目录:include.lib.bin,分别是头文件目录.库文件目录.运行文件目录.或许目录不叫这个名字,但却必不可少,除非你的 ...

  7. qt画刷和画笔

    # -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #画刷和画笔:QBrush 定义了 QPainter 的填充模式,具 ...

  8. Oracle 事务的開始与结束

    事务是用来切割数据库活动的逻辑工作单元,事务即有起点,也有终点: 当下列事件之中的一个发生时,事务就開始了: 连接到数据库上,并运行了第一天 DML 语句: 当前一个事务结束后,又输入了另外一条 DM ...

  9. Android FragmentActivity onActivityResult冲突问题

    场景:假设fragment的填充数据是ListView,ListView中的每一项都有button,点击每一项的button跳转到B界面.在B界面处理完业务需返回fragment中更新数据. 解决方式 ...

  10. SpringMVC的@ResponseBody返回JSON,中文乱码问题的解决.

    SpringMVC的@ResponseBody,返回json,如果有中文显示乱码的解决办法. 在SpringMVC的配置文件中 <bean class="org.springframe ...