最近在做report开发,用java将数据生成excel 表格,主要利用jxl.jar 和poi.jar来实现。
我看过两段代码,刚好一个是jxl写的,另一个是poi写的,区别可以看出来,^_^ 下面这些看不出来的是前人总结的:
POI为apache公司的一个子项目,主要是提供一组操作windows文档的Java API.
JavaExcel俗称jxl是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表。因为是使用Java编写的,所以我们在Web应用中可以通过JSP、Servlet来调用API实现对Excel数据表的访问。
就这两者的区别,主要谈下JVM虚拟机内存消耗的情况.
数据量3000条数据,每条60列.JVM虚拟机内存大小64M.
使用POI:运行到2800条左右就报内存溢出.
使用JXL:3000条全部出来,并且内存还有21M的空间.
可想而知,在对内存的消耗方面差距还是挺大的.
也许是由于JXL在对资源回收利用方面做的还挺不错的.
关于两者效率方面,也是基于大数据量而言的,数据量小的话基本上差别不大,也不难被发觉.但是大的数据量,POI消耗的JVM内存远比JXL消耗的多.但相比提供的功能的话,JXL又相对弱了点.所以如果要实现的功能比较复杂的情况下可以考虑使用POI,但如果只想生成一些大数据量可以考虑使用JXL,或者CSV也是一个不错的选择,不过CSV并不是真正的excel
我现在是用jxl来实现的,他直接可以往cell里面添加数据,比如:
WritableWorkbook w = Workbook.createWorkbook(response.getOutputStream()); WritableSheet s = w.createSheet("MA Status", 0); s.addCell(new Label(i,11,"",wcsB1));
wcsB1是对字体样式的设置,jxl中样式的设置和poi也是有很大区别的:
jxl.write.WritableFont john = new WritableFont(WritableFont.createFont("Arial Narrow"),12,WritableFont.BOLD,false,jxl.format.UnderlineStyle.NO_UNDERLINE); jxl.write.WritableCellFormat wcsB1 = new jxl.write.WritableCellFormat(john);
再来看看poi中如何创建单元格 以及设置样式的:
HSSFWorkbook workbook = new HSSFWorkbook(); itemSheet = workbook.createSheet(itemName); int rownum = 1;//第二行開始 HSSFRow row_header =itemSheet.createRow(rownum++);//第二行放報表頭信息 HSSFCell cell = row_header.createCell(10); cell.setCellType(HSSFCell.CELL_TYPE_STRING); cell.setCellStyle(styles.get("cell_header")); cell.setCellValue(TITLE_header+cust_name);
样式设置代码:
HSSFCellStyle cell_header_title = wb.createCellStyle(); HSSFFont font_header_title = wb.createFont(); font_header_title.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//粗體 font_header_title.setFontHeight((short)(9*20)); font_header_title.setFontName("Times New Roman");//字體樣式 cell_header_title.setFont(font_header_title); cell_header_title.setAlignment(HSSFCellStyle.ALIGN_CENTER);//居中 cell_header_title.setWrapText(true); styles.put("cell_header_title", cell_header_title);
记得有一次一个朋友说他们公司的报表都是用工具配置出来的,那是我刚刚接触报表,听了羡慕嫉妒恨,经常在办公室嘟囔,后来听同事说我们公司的报表80%都是配置出来的,只有一少部分在手写,因为他太特殊,必须都手写。哦是这样的。