poi 新手教程

文章转载自http://wallimn.iteye.com/blog/420384,略有更改

Jakarta_POI 使用Java读写Excel(97-2002)文件,可以满足大部分的需要。 
因为刚好有一个项目使用到了这个工具,花了点时间顺便翻译了一下POI本身 
带的一个Guide.有一些节减和修改,希望给使用这个项目的人一些入门帮助。 
POI 下面有几个自项目:HSSF用来实现Excel 的读写.以下是HSSF的主页 
http://jakarta.apache.org/poi/hssf/index.html 

下面的介绍是基于以下地址的翻译: 
http://jakarta.apache.org/poi/hssf/quick-guide.html 

目前的版本为1.51应该是很长时间之内的一个稳定版,但HSSF提供的Sample不是基于 
1.51所写,所以使用的时候需要适当的注意. 
其实POI下面的几个子项目侧重不同读写 Word 的HDF正在开发当中. 
XML下的FOP(http://xml.apache.org/fop/index.html) 
可以输出pdf文件,也是比较好的一个工具 

目录: 
创建一个workbook 
创建一个sheet 
创建cells 
创建日期cells 
设定单元格格式 

说明: 
需要引入的jar包

poi-3.9

poi-ooxml-3.9


创建workbook 

HSSFWorkbook wb = new HSSFWorkbook(); 
//使用默认的构造方法创建workbook 
FileOutputStream fileOut = new FileOutputStream("workbook.xls"); 
//指定文件名 
wb.write(fileOut); 
//输出到文件 
fileOut.close(); 

创建一个sheet 

HSSFWorkbook wb = new HSSFWorkbook(); 
HSSFSheet sheet1 = wb.createSheet("new sheet"); 
//workbook创建sheet 
HSSFSheet sheet2 = wb.createSheet("second sheet"); 
//workbook创建另外的sheet 
FileOutputStream fileOut = new FileOutputStream("workbook.xls"); 
wb.write(fileOut); 
fileOut.close(); 

创建cells 
HSSFWorkbook wb = new HSSFWorkbook(); 
HSSFSheet sheet = wb.createSheet("new sheet"); 
//注意以下的代码很多方法的参数是short 而不是int 所以需要做一次类型转换 

// HSSFRowcreateCell(short columnIndex), createCell(short columnIndex,int type)都已经弃用
//本文用的是createCell(int columnIndex);
HSSFRow row = sheet.createRow(0); 
//sheet 创建一行 
HSSFCell cell = row.createCell(0); 
//行创建一个单元格 
cell.setCellValue(1); 
//设定单元格的值 
//值的类型参数有多中double ,String ,boolean, 
row.createCell(1).setCellValue(1.2); 
row.createCell(2).setCellValue("This is a string"); 
row.createCell(3).setCellValue(true); 

// Write the output to a file 
FileOutputStream fileOut = new FileOutputStream("workbook.xls"); 
wb.write(fileOut); 
fileOut.close(); 

创建日期cells 
HSSFWorkbook wb = new HSSFWorkbook(); 
HSSFSheet sheet = wb.createSheet("new sheet"); 

HSSFRow row = sheet.createRow(0); 

HSSFCell cell = row.createCell(0); 
//设定值为日期 
cell.setCellValue(new Date()); 

HSSFCellStyle cellStyle = wb.createCellStyle(); 
//指定日期显示格式 

//hssfDataFormat的getformat方法不能用,查看api发现没错,不知道为什么就是不能用,但是getBuiltinFormat
//也比他好用,可以替代它
cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm")); 
cell = row.createCell(1); 
cell.setCellValue(new Date()); 
//设定单元格日期显示格式 
cell.setCellStyle(cellStyle); 

FileOutputStream fileOut = new FileOutputStream("workbook.xls"); 
wb.write(fileOut); 
fileOut.close(); 

设定单元格格式 
单元格格式的设定有很多形式包括单元格的对齐方式,内容的字体设置, 
单元格的背景色等,因为形式比较多,只举一些例子.以下的例子在 
POI1.5中可能会有所改变具体查看API. 
.......... 
// Aqua background 
HSSFCellStyle style = wb.createCellStyle(); 
//创建一个样式 
style.setFillBackgroundColor(HSSFCellStyle.AQUA.index); 
//设定此样式的的背景颜色填充 
style.setFillPattern(HSSFCellStyle.BIG_SPOTS); 

//样式的填充类型。 
//有多种式样如: 
//HSSFCellStyle.BIG_SPOTS 
//HSSFCellStyle.FINE_DOTS 
//HSSFCellStyle.SPARSE_DOTS等 
style.setAlignment(HSSFCellStyle.ALIGN_CENTER ); 
//居中对齐 
style.setFillBackgroundColor(HSSFColor.GREEN.index); 
//设定单元个背景颜色 
style.setFillForegroundColor(HSSFColor.RED.index); 
//设置单元格显示颜色 
HSSFCell cell = row.createCell((short) 1); 
cell.setCellValue("X"); 
cell.setCellStyle(style); 


使用poi的hssf生成一个excel文件以后 
有一个主类Workbook(相当于一个excel文件)的方法 
Workbook.write(OutputStream)可以写到response.getOutputStream()里面 
如果事先设置response的contentType为excel和下载的附件名称就可下载excel 
    HSSFWorkbook book = _proxy.expertExcel(_formBean,_login); 

    if(book!=null) 
    { 
        response.setContentType ( "application/ms-excel" ) ; 
        response.setHeader ( "Content-Disposition" , 
                             "attachment;filename="+new String("导出Excel.xls".getBytes(),"iso-8859-1")) ; 
        book.write(response.getOutputStream()); 
    } 

其中expertExcel无非是从数据库或者其他地方获取数据创建excel即可.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值