当前位置:首页 > Java中导入、导出Excel(烟台杰瑞教育原创)
烟台杰瑞教育科技有限公司(Java开发培训部) 版权所有
Java中导入、导出Excel
一、介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统、银行系统)。或者是:我们已经习惯用Excel打印。这样在我们实际的开发中,很多时候需要实现导入、导出Excel的应用。
目前,比较常用的实现Java导入、导出Excel的技术有两种Jakarta POI和Java Excel 下面我就分别讲解一下如何使用这两个技术实现导入、导出Excel
二、使用Jakarta POI导入、导出Excel Jakarta POI 是一套用于访问微软格式文档的Java API。Jakarta POI有很多组件组成,其中有用于操作Excel格式文件的HSSF和用于操作Word的HWPF,在各种组件中目前只有用于操作Excel的HSSF相对成熟。官方主页http://poi.apache.org/index.html,API文档http://poi.apache.org/apidocs/index.html
2.1 环境配置 2.1.1下载jar
官方下载:http://poi.apache.org/download.html这里可以下载到它的最新版本和文档,目前最新版本是3.7,这里使用比较稳定的3.6版。
2.1.2加入jar包
------杰瑞教育(www.jerehedu.com) 专注IT技能培训 打造一流人才服务平台------
烟台杰瑞教育科技有限公司(Java开发培训部) 版权所有
将根目录下的poi-3.6-20091214.jar和Lib目录下三个通用包
commons-logging-1.1.jar junit-3.8.1.jar log4j-1.2.13.jar拷贝到项目的Lib下
2.2 Jakarta POI HSSF API组件 HSSF(用于操作Excel的组件)提供给用户使用的对象在
rg.apache.poi.hssf.usermodel包中,主要部分包括Excel对象,样式和格式,还有辅助操作。有以下几种对象:
常用组件:
HSSFWorkbook excel的文档对象 HSSFSheet excel的表单 HSSFRow excel的行 HSSFCell excel的格子单元 HSSFFont excel字体 HSSFDataFormat 日期格式 HSSFHeader sheet头
HSSFFooter sheet尾(只有打印的时候才能看到效果) 样式:
HSSFCellStyle cell样式 辅助操作包括:
HSSFDateUtil 日期 HSSFPrintSetup 打印
HSSFErrorConstants 错误信息表
2.3 基本操作步骤 ------杰瑞教育(www.jerehedu.com) 专注IT技能培训 打造一流人才服务平台------
烟台杰瑞教育科技有限公司(Java开发培训部) 版权所有
首先,理解一下一个Excel的文件的组织形式,一个Excel文件对应于一个
workbook(HSSFWorkbook),一个workbook可以有多个sheet(HSSFSheet)组成,一个sheet是由多个row(HSSFRow)组成,一个row是由多个cell(HSSFCell)组成。 基本操作步骤:
1、用HSSFWorkbook打开或者创建“Excel文件对象” 2、用HSSFWorkbook对象返回或者创建Sheet对象 3、用Sheet对象返回行对象,用行对象得到Cell对象 4、对Cell对象读写。
下面来看一个动态生成Excel文件的例子:
//创建HSSFWorkbook对象
HSSFWorkbook wb = new HSSFWorkbook(); //创建HSSFSheet对象
HSSFSheet sheet = wb.createSheet(\//创建HSSFRow对象
HSSFRow row = sheet.createRow(0); //创建HSSFCell对象
HSSFCell cell=row.createCell(0); //设置单元格的值
cell.setCellValue(\单元格中的中文\//输出Excel文件
FileOutputStream output=new FileOutputStream(\wkb.write(output); output.flush();
HSSF读取文件同样还是使用这几个对象,只是把相应的createXXX方法变成了getXXX方法即可。可见只要理解了其中原理,不管是读还是写亦或是特定格式都可以轻松实现,正所谓知其然更要知其所以然。
2.4 导出Excel应用实例 ------杰瑞教育(www.jerehedu.com) 专注IT技能培训 打造一流人才服务平台------
烟台杰瑞教育科技有限公司(Java开发培训部) 版权所有
在2.3中我们寥寥几行代码实际上就已经就是实现了导出Excel一个简单示例,下面我们在看如何实现导出如图所示的Excel表格?
代码如下:(实际开发中应封装到业务层组件中,然后在控制层中调用。这里直接写在控制层组件,如Servlet的doGet/doPost方法或Struts框架的execute方法中)
//创建HSSFWorkbook对象(excel的文档对象) HSSFWorkbook wb = new HSSFWorkbook(); //建立新的sheet对象(excel的表单) HSSFSheet sheet=wkb.createSheet(\成绩表\
//在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个 HSSFRow row1=sheet.createRow(0);
//创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个 HSSFCell cell=row1.createCell(0); //设置单元格内容
cell.setCellValue(\学员考试成绩一览表\
//合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列 sheet.addMergedRegion(new CellRangeAddress(0,0,0,3)); //在sheet里创建第二行
HSSFRow row2=sheet.createRow(1); //创建单元格并设置单元格内容
row2.createCell(0).setCellValue(\姓名\ row2.createCell(1).setCellValue(\班级\ row2.createCell(2).setCellValue(\笔试成绩\row2.createCell(3).setCellValue(\机试成绩\ //在sheet里创建第三行
HSSFRow row3=sheet.createRow(2);
row3.createCell(0).setCellValue(\李明\ row3.createCell(1).setCellValue(\ row3.createCell(2).setCellValue(87); row3.createCell(3).setCellValue(78); //.....省略部分代码
------杰瑞教育(www.jerehedu.com) 专注IT技能培训 打造一流人才服务平台------
共分享92篇相关文档