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 }