借助POI实现Java生成并打印报表(Excel)

本文介绍了如何借助Apache POI库在Java中生成Excel报表,包括创建工作簿、工作表、行、单元格,以及设置单元格内容和样式。通过示例代码展示了从数据库读取数据并导出到Excel的过程。
摘要由CSDN通过智能技术生成

10.1、了解 Apache POI

      实际开发中,用到最多的是把数据库中数据导出生成报表,尤其是在生产管理或者财务系统中用的非常普遍。生成报表格式一般是EXCEL或者PDF 。利用Apache  POI实现数据库中数据导出生成excel报表。在java众多数据导出excel报表的第三方jar包中POI相对来说比较好用。

      

      Apache POI 是用Java编写的免费开源的跨平台 API,给Java提供对Microsoft Office格式档案读和写的功能,创建和维护操作各种符合Office Open XML(OOXML)标准和微软的OLE2复合文档格式(OLE2)。借助POI,Java可以读取、创建和修改MS Excel文件、MS Word文件及MSPowerPoint文件,其中office2003、2010均可以。下面是Apache POI 中提供的几大部分的作用:

                             HSSF - 提供读写Microsoft Excel XLS格式档案的功能。

                             HSSF - 提供读写Microsoft Excel XLS格式档案的功能。

                             XSSF - 提供读写Microsoft Excel OOXML XLSX格式档案的功能。

                             HWPF - 提供读写Microsoft Word DOC格式档案的功能。

                             HSLF - 提供读写Microsoft PowerPoint格式档案的功能。

                             HDGF - 提供读Microsoft Visio格式档案的功能。

                             HPBF - 提供读Microsoft Publisher格式档案的功能。

                             HSMF - 提供读Microsoft Outlook格式档案的功能。

创建一个excel报表步骤:                  

      1. 创建新的Excel工作薄

HSSFWorkbook workbook = new HSSFWorkbook();

在Excel工作簿中建一工作表,其名为缺省值。POI中还提供了其他的一些workbook 构造方法。

      2.创建一个工作表。新建一名为"工资表"的工作表:  

HSSFSheet sheet = workbook.createSheet("工资表"); 

      3.创建行。在索引0的位置创建行(最顶端的行):  

HSSFRow row = sheet.createRow(0);

      4.创建单元格。在索引0的位置创建单元格(左上端):  

HSSFCell cell = row.createCell((short) 0);

            定义单元格为字符串类型(也可在创建单元格里面设置):

cell.setCellType(HSSFCell.CELL_TYPE_STRING); 

            在单元格中输入一些内容: 

cell.setCellValue("增加值"); 

      5.新建一输出文件流,把相应的Excel工作簿输出到本地

FileOutputStream fOut = new FileOutputStream(outputFile);

workbook.write(fOut);

fOut.flush();

             操作结束,关闭文件

fOut.close(); 

  在给单元格设置下从数据库中读取的数据。这样就可以把数据库里面的内容导入到excel了。

 

10.2、常用方法列举:

对象种类:

HSSFWorkbook excell的文档对象 

HSSFSheet excell的表单

HSSFRow excell的行

HSSFCell excell的格子单元

HSSFFont excell字体

HSSFName 名称

HSSFDataFormat 日期格式 

样式示例:(整数型、浮点型、布尔型、字符串型、日期格式、中西文结合式)

 1 import org.apache.poi.hssf.usermodel.*;  
 2 import java.io.FileOutputStream;  
 3 import java.io.IOException;  
 4 publicclass CreateCells  
 5 {  
 6 publicstaticvoid main(String[] args)  
 7 throws IOException  
 8 {  
 9 HSSFWorkbook wb = new HSSFWorkbook();//建立新HSSFWorkbook对象
10 HSSFSheet sheet = wb.createSheet("new sheet");//建立新的sheet对象
11 // Create a row and put some cells in it. Rows are 0 based.
12 HSSFRow row = sheet.createRow((short)0);//建立新行
13 // Create a cell and put a value in it.
14 HSSFCell cell = row.createCell((short)0);//建立新cell
15 cell.setCellValue(1);//设置cell的整数类型的值
16 // Or do it on one line.
17 row.createCell((short)1).setCellValue(1.2);//设置cell浮点类型的值
18 row.createCell((short)2).setCellValue("test");//设置cell字符类型的值
19 row.createCell((short)3).setCellValue(true);//设置cell布尔类型的值
20 HSSFCellStyle cellStyle = wb.createCellStyle();//建立新的cell样式
21 cellStyle.setDataFormat(HSSFDataFormat.getFormat("m/d/yy h:mm"));//设置cell样式为定制的日期格式
22 HSSFCell dCell =row.createCell((short)4);  
23 dCell.setCellValue(new Date());//设置cell为日期类型的值
24 dCell.setCellStyle(cellStyle); //设置该cell日期的显示格式
25 HSSFCell csCell =row.createCell((short)5);  
26 csCell.setEncoding(HSSFCell.ENCODING_UTF_16);//设置cell编码解决中文高位字节截断
27 csCell.setCellValue("中文测试_Chinese Words Test");//设置中西文结合字符串
28 row.createCell((short)6).setCellType(HSSFCell.CELL_TYPE_ERROR);//建立错误cell
29 // Write the output to a file
30 FileOutputStream fileOut = new FileOutputStream("workbook.xls");  
31 wb.write(fileOut);  
32 fileOut.close();  
33 }  
34 } 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值