java apache.poi_Java利用apache的POI操作Excel
最近在写一些报表的活,顺便总结下。。。第一篇博文,希望多多指教。
项目中经常会设计到一些数据的报表问题,目前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相关推荐
- Apache POI操作Excel导出JAVABEAN对象方法
2019独角兽企业重金招聘Python工程师标准>>> Apache POI操作Excel导出方法说明 Apache的POI组件是Java操作Microsoft Office办公套件 ...
- java excel 边框_【web开发】☆★之利用POI操作Excel表格系列教程【9】单元格边框处理...
[web开发]☆★之利用POI操作Excel表格系列教程[9]单元格边框处理 package csg.xiaoye.poidemo; import java.io.FileOutputStream; ...
- Apache POI操作Excel的坑
本文记录一下用Apache POI操作Excel时可能遇到一些坑. excel版本错误 首先是excel版本问题,由于office excel 03版和07版的区别,在读取文件时如果版本不匹配会报以下 ...
- Apache POI操作Excel文件
Apache POI是用Java编写的免费开源的跨平台的Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能,其中使用最多的就是使用PO ...
- 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 ...
- 【web开发】☆★之利用POI操作Excel表格系列教程【6】遍历工作簙行和列取值
[web开发]☆★之利用POI操作Excel表格系列教程[6]遍历工作簙行和列取值 package com.xiaoye.demo; import java.io.FileInputStream; i ...
- Java实战—POI操作Excel文档、读取、写入、合并单元格
一.POI项目简介 POI全称 Poor Obfuscation Implementation,利用POI接口可以通过JAVA操作Microsoft office 套件工具的读写功能.官网:http: ...
- Java - Poi 操作 Excel
Java - Poi 操作 Excel 关注 "弋凡"(YiFan)微信公众号吧 记录简单笔记 做你的最爱 注意 XSSFWorkbook 对象是操作 .xlsx 格式的表格 HS ...
- 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 ...
最新文章
- Python 爬虫从入门到进阶之路(七)
- 深度学习解决多视图非线性数据特征融合问题
- 明天要中秋节了,先来到简单“类”的题目
- 情人节,我表白了CSDN小姐姐后,竟然...【为表白写了一个绘图工具,让我不再手残】
- NOIP2016 复赛普及组第 1 题 买铅笔 方法一
- linux环境下配置虚拟主机域名
- 校招刷题---java选择题笔记05
- 测试python安装成功_Python在Windows上安装配置测试
- Bailian2887 能被3,5,7整除的数【入门】
- Adobe Reader安装错误150120的解决
- 南开大学c语言100题,计算机二级C语言上机(南开大学)100题.doc
- Redis数据类型及编码
- c语言兵器谱,程序员兵器谱——那些男人们梦寐以求的终极键盘
- 【嵌入式】如果用PS导出GIF图片
- 你真的了解Linux(Deepin)的软件商店吗?(内附极力推荐的软件)
- 竞争学习神经网络-SOM
- 程序人生之——(释怀)
- 15天精读掌握《高德纳_具体数学》 第11天 2019.6.7
- 达梦数据库之DM8_实时数据守护配置
- TFS(Taobao File System)安装办法