Java使用poi组件导出Excel格式数据

2020-02-20 22:01:21于丽

在做管理系统的时候,我想Excel的导出是我们很难规避掉的,而且这也是个很实用很人性化的功能。

Java中对于Excel的支持有很多种,比如说JXL,POI等。我这边使用的是POI进行一个Excel的操作,下面我会简单分享下POI组件的使用,以及我使用比较多一个工具类。

POI组件

poi组件是由Apache提供的组件包,主要职责是为我们的Java程序提供对于office文档的相关操作。本文主要是它对于Excel操作的一个介绍。

官方主页:http://poi.apache.org/index.html

API文档:http://poi.apache.org/apidocs/index.html

POI组件基本介绍

使用的时候我们可以发现poi组件为我们提供的操作Excel的相关类都是HSSF开头的,这些类主要是在org.apache.poi.hssf.usermodel这个包下面。里面包涵有像Excel的对象,单元格的样式,字体样式以及部分的工具类。一下介绍几个我们常用的类:

    HSSFWorkbook:Excel对象,相当于一个 .xls/.xlsx 文件 HSSFSheet:工作表对象,Excel文件包涵的sheet,一个对象代表一个表单 HSSFRow:表示表格中的行对象。 HSSFCell:表示表格中的单元格对象。 HSSFHeader:Excel文档Sheet的页眉。 HSSFFooter:Excel文档Sheet的页脚。 HSSFDataFormat:日期格式。 HSSFFont:字体对象。 HSSFCellStyle:单元格样式(对齐样式、边框等) HSSFComment:批注(注释)。 HSSFPatriarch:和HSSFComment用于创建注释的位置。 HSSFColor:颜色对象。 HSSFDateUtil:日期辅助工具 HSSFPrintSetup:打印辅助工具 HSSFErrorConstants:错误信息表

POI组件基本操作

1.HSSFWorkbook创建‘Excel文件对象'

//创建Excel对象
HSSFWorkbook workbook = new HSSFWorkbook();

2.使用workbook 对象创建工作表对象

//创建工作表单
HSSFSheet sheet = workbook.createSheet("对象报表"); 

3.创建行和操作单元格对象

//创建HSSFRow对象 (行)
HSSFRow row = sheet.createRow(0); 

//创建HSSFCell对象 (单元格)
HSSFCell cell=row.createCell(0); 

//设置单元格的值 
cell.setCellValue("单元格中的中文"); 

4.保存Excel文件

//输出Excel文件 
FileOutputStream output=new FileOutputStream("d:workbook.xls"); 

workbook.write(output); 

output.flush(); 

个性化导出—样式设置

这边我列举出部分常用的样式设置的方法!

1.合并单元格,设置宽、高

// 实例化样式对象
HSSFCellStyle cellStyle = workbook.createCellStyle(); 
// 两端对齐
cellStyle.setAlignment(HSSFCellStyle.ALIGN_JUSTIFY); 
// 垂直居中
cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);  
// 填充图案---填充方式
cellStyle.setFillPattern(HSSFCellStyle.DIAMONDS); 
// 设置前景色 (这个要写在背景色的前面)
cellStyle.setFillForegroundColor(HSSFColor.RED.index); 
// 设置背景颜色 
cellStyle.setFillBackgroundColor(HSSFColor.LIGHT_YELLOW.index); 
// 设置边框
cellStyle.setBorderBottom(HSSFCellStyle.BORDER_SLANTED_DASH_DOT); 
// 边框颜色
cellStyle.setBottomBorderColor(HSSFColor.DARK_RED.index); 
// 日期展示格式 
cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));  

//将样式应用于单元格
cell.setCellStyle(cellStyle); 
//将样式应用到行 
row.setRowStyle(cellStyle);