最近在写一些报表的活,顺便总结下。。。第一篇博文,希望多多指教。

项目中经常会设计到一些数据的报表问题,目前java中操作Excel的插件也有很多 ,我说下用apache的POI操作Excel的方法。

首先,最简单 一种方法就是直接从本地读取Excel模版,然后往Excel里添加数据,

首先需要加载POI的几个包,目前最新的版本是3.9的,读取本地Excel的代码如下

package com.zhao.poi;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.net.URLEncoder;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.poi.hssf.usermodel.HSSFCell;

import org.apache.poi.hssf.usermodel.HSSFRow;

import org.apache.poi.hssf.usermodel.HSSFSheet;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.apache.poi.poifs.filesystem.POIFSFileSystem;

import org.apache.struts2.ServletActionContext;

/**

* 类名:

* 描述:利用POI读取excel模版信息

* 类型:

* 作者:ZhaoLibin

* 日期:2013-01-22

*/

public class ReadExcelTemplate {

private HttpServletResponse response = ServletActionContext.getResponse();

/**

* 描述:测试主方法信息

* 参数:

* 返回:

* 作者:ZhaoLibin

* 日期:2013-01-22

*/

public static void main(String[] args) throws IOException{

readExcelTemplate();

}

public static void readExcelTemplate() throws IOException{

FileInputStream in = new FileInputStream("C:/新退休审批名册(归并后启用).xls");

POIFSFileSystem fs = new POIFSFileSystem(in);

HSSFWorkbook wb = new HSSFWorkbook(fs);

HSSFSheet sheet = wb.getSheetAt(0);

HSSFRow row = sheet.getRow(5);

HSSFCell cell = row.getCell((short)0);//姓名

cell.setCellValue("Zhaolibin");

cell = row.getCell((short)1);//性别

cell.setCellValue("男");

cell = row.getCell((short)2);//出生年月o

cell.setCellValue("1990-04-02");

cell = row.getCell((short)3);//参加工作年月

cell.setCellValue("2012-07");

cell = row.getCell((short)4);//连续工龄

cell.setCellValue(1);

cell = row.getCell((short)5);//职务

cell.setCellValue("java程序猿");

cell = row.getCell((short)6);//退休年月

cell.setCellValue("2033-06");

FileOutputStream out = new FileOutputStream("c:/加入数据的退休审批名册.xls");

wb.write(out);

}

}

比较简单,如果是在J2EE项目中,一般我们需要在页面生成下载流,可以把Excel模版放在项目webRoot下面,获得此路径的方法如下:

String path = ServletActionContext.getServletContext().getRealPath("/");

如在webRoot建立文件夹fileTemplate,并把我们的Excel模版“新退休审批名册(归并后启用).xls”放在此文件夹下,读取文件路径可以这么写

String filePath = path+"fileTemplate/新退休审批名册(归并后启用).xls";

当然我们还需要设置response的响应头,我们操作文件过程中,最重要的就是对流的控制,打开流之后一定要关闭,不然就会一直在我们的java虚拟机中,导致我们无法正常读取文件,J2EE中在页面生成下载流的代码如下:

package com.zhao.poi;

import java.io.FileInputStream;

import java.io.OutputStream;

import java.net.URLEncoder;

import javax.servlet.http.HttpServletResponse;

import org.apache.poi.hssf.usermodel.HSSFCell;

import org.apache.poi.hssf.usermodel.HSSFRow;

import org.apache.poi.hssf.usermodel.HSSFSheet;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.apache.poi.poifs.filesystem.POIFSFileSystem;

import org.apache.struts2.ServletActionContext;

/**

* 类名:

* 描述:利用POI读取excel模版信息

* 类型:

* 作者:ZhaoLibin

* 日期:2013-01-22

*/

public class ReadExcelTemplate {

private HttpServletResponse response = ServletActionContext.getResponse();//响应流

private String path = ServletActionContext.getServletContext().getRealPath("/");//webRoot路径

/**

* 描述:设置下载响应信息

* 参数:

* 返回:

* 作者:ZhaoLibin

* 日期:2013-01-14

*/

public void setResponseHeader(String title){

try{

response.setContentType("application/vnd.ms-excel;charset=UTF-8");

response.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(title, "UTF-8"));

//客户端不缓存

response.addHeader("Pargam", "no-cache");

response.addHeader("Cache-Control", "no-cache");

}catch(Exception ex){

ex.printStackTrace();

}

}

/**

* 描述:入口方法信息

* 参数:

* 返回:

* 作者:ZhaoLibin

* 日期:2013-01-22

*/

public void readExcelTemplate(){

try {

setResponseHeader("退休审批名册.xls");

readExcelTemplate(response.getOutputStream());

response.getOutputStream().flush();

response.getOutputStream().close();

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 描述:操作模版Excel信息

* 参数:

* 返回:

* 作者:ZhaoLibin

* 日期:2013-01-22

*/

public void readExcelTemplate(OutputStream os){

try{

FileInputStream in = new FileInputStream(path+

"fileTemplate/retirement_examine/新退休审批名册(归并后启用).xls");

POIFSFileSystem fs = new POIFSFileSystem(in);//POI读取输入流

HSSFWorkbook wb = new HSSFWorkbook(fs);//代表整个excel

HSSFSheet sheet = wb.getSheetAt(0);//得到excel里的第一个sheet表单 如有多个表单可以改变参数来获得

HSSFRow row = sheet.getRow(5);//得到sheet表单的第几行,注意excel相当于一个二维数组,下标是从0开始的

//这里获取的是第6行,我的模版前5行都是表头菜单

//设置值

HSSFCell cell = row.getCell((short)0);//姓名

cell.setCellValue("Zhaolibin");

cell = row.getCell((short)1);//性别

cell.setCellValue("男");

cell = row.getCell((short)2);//出生年月o

cell.setCellValue("1990-04-02");

cell = row.getCell((short)3);//参加工作年月

cell.setCellValue("2012-07");

cell = row.getCell((short)4);//连续工龄

cell.setCellValue(1);

cell = row.getCell((short)5);//职务

cell.setCellValue("java程序猿");

cell = row.getCell((short)6);//退休年月

cell.setCellValue("2033-06");

wb.write(os);//在response响应中生成下载流

}catch(Exception e){

e.printStackTrace();//按照你们日志的设置格式,把异常添加到日志里

}

}

}

以上就是项目中读取excel模版的方法,比较简单但还是挺实用的,因为如果你在模版中设置好了Excel的各种样式表头,在实际操作中只要加入数据即可。

java apache.poi_Java利用apache的POI操作Excel相关推荐

  1. Apache POI操作Excel导出JAVABEAN对象方法

    2019独角兽企业重金招聘Python工程师标准>>> Apache POI操作Excel导出方法说明 Apache的POI组件是Java操作Microsoft Office办公套件 ...

  2. java excel 边框_【web开发】☆★之利用POI操作Excel表格系列教程【9】单元格边框处理...

    [web开发]☆★之利用POI操作Excel表格系列教程[9]单元格边框处理 package csg.xiaoye.poidemo; import java.io.FileOutputStream; ...

  3. Apache POI操作Excel的坑

    本文记录一下用Apache POI操作Excel时可能遇到一些坑. excel版本错误 首先是excel版本问题,由于office excel 03版和07版的区别,在读取文件时如果版本不匹配会报以下 ...

  4. Apache POI操作Excel文件

    Apache POI是用Java编写的免费开源的跨平台的Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能,其中使用最多的就是使用PO ...

  5. java 中的poi_Java中使用POI操作ExceL的读与

    1.Java中使用POI操作ExceL的读与写 ​直接给代码 1.1导入依赖 org.apache.poi poi 3.10-FINAL org.apache.poi poi-ooxml 3.10-F ...

  6. 【web开发】☆★之利用POI操作Excel表格系列教程【6】遍历工作簙行和列取值

    [web开发]☆★之利用POI操作Excel表格系列教程[6]遍历工作簙行和列取值 package com.xiaoye.demo; import java.io.FileInputStream; i ...

  7. Java实战—POI操作Excel文档、读取、写入、合并单元格

    一.POI项目简介 POI全称 Poor Obfuscation Implementation,利用POI接口可以通过JAVA操作Microsoft office 套件工具的读写功能.官网:http: ...

  8. Java - Poi 操作 Excel

    Java - Poi 操作 Excel 关注 "弋凡"(YiFan)微信公众号吧 记录简单笔记 做你的最爱 注意 XSSFWorkbook 对象是操作 .xlsx 格式的表格 HS ...

  9. execle java,Java使用POI操作Excel

    Java使用POI操作Excel 1. POI操作Excel 1.1. 依赖 org.apache.poi poi 4.1.0 org.apache.poi poi-ooxml 4.1.0 org.a ...

最新文章

  1. Python 爬虫从入门到进阶之路(七)
  2. 深度学习解决多视图非线性数据特征融合问题
  3. 明天要中秋节了,先来到简单“类”的题目
  4. 情人节,我表白了CSDN小姐姐后,竟然...【为表白写了一个绘图工具,让我不再手残】
  5. NOIP2016 复赛普及组第 1 题 买铅笔 方法一
  6. linux环境下配置虚拟主机域名
  7. 校招刷题---java选择题笔记05
  8. 测试python安装成功_Python在Windows上安装配置测试
  9. Bailian2887 能被3,5,7整除的数【入门】
  10. Adobe Reader安装错误150120的解决
  11. 南开大学c语言100题,计算机二级C语言上机(南开大学)100题.doc
  12. Redis数据类型及编码
  13. c语言兵器谱,程序员兵器谱——那些男人们梦寐以求的终极键盘
  14. 【嵌入式】如果用PS导出GIF图片
  15. 你真的了解Linux(Deepin)的软件商店吗?(内附极力推荐的软件)
  16. 竞争学习神经网络-SOM
  17. 程序人生之——(释怀)
  18. 15天精读掌握《高德纳_具体数学》 第11天 2019.6.7
  19. 达梦数据库之DM8_实时数据守护配置
  20. TFS(Taobao File System)安装办法

热门文章

  1. win03组策略-入门篇
  2. KPI总结模板:What
  3. web前端开发初学者十问集锦(5)
  4. Python标准库--time模块的详解
  5. PLC-PC communication with C#: a quick resume about data exchange libraries
  6. windows平台源码编译最新版openssl
  7. daily scrum 12.2
  8. PDF转换技巧之如何把文件转换为WPS?
  9. 专访尤雨溪:先别管4.0了,Vue CLI重构了解一下
  10. Linux防火墙-iptables