最近项目中要将较大数据生成Excel2003或Excel2007文件。
由于POI很好的采用了面向接口编程的思想,所以其实生成Excel2003和生成Excel2007的代码多数是可以复用的。
我的做法是:
1.定义Excel2003FileCreator,用来生成Excel2003文件
2.定义Excel2007FileCreator,用来生成Excel2007文件,Excel2007FileCreator extends Excel2003FileCreator。
在Excel2003FileCreator中定义
protected org.apache.poi.ss.usermodel.Workbook workbook;
protected org.apache.poi.ss.usermodel.Sheet sheet;
private org.apache.poi.ss.usermodel.Row row
Workbook,Sheet,Row均为接口。
只要在生成workbook时,确定是
org.apache.poi.hssf.usermodel.HSSFWorkbook // 生成Excel2003文件用
还是
org.apache.poi.xssf.usermodel.XSSFWorkbook // 生成Excel2007文件用
即可。
后续的Sheet,Row 都是根据 workbook 创建的。
问题的出现:
在对每一个Cell进行设置Style和Value的时候,我先根据DB中的配置,取得每个单元格的格式,再对其进行设定值。
再进行设置其他单元格格式。
只列实现代码:
取得的Style,再调用Cell对象的 cell.setCellStyle(Style) 进行设置格式。
因为这段代码是生成Excel2003和Excel2007时候都要用到的。
生成1w的数据,Excel2003是没有问题的,速度很快。
但是同样的数据,生成Excel2007时,速度慢的可以,让人不能接受。
最后调查得出的结果是:瓶颈在于org.apache.poi.xssf.usermodel.XSSFWorkbook 在生成字体和样式对象时。
问题的解决:
由于对于文件体的单元格设置,每一列几乎是相同的。所以将生成字体和单元格样式的代码做了一些小调整:
取得样式
这样改了之后,速度立刻提高了。
当然,在用完之后,记得clear。
这里要注意的是,缓存HashMap对象中的Key的设定。
Key在组合时要体现出你的单元格格式,又不会因为组合,使得缓存中对象混乱了。
分享到:
相关推荐
在给定的“poi3.6最新jar包”中,包含的是Apache POI 3.6版本的二进制发行版。这个版本发布于2009年12月14日,是当时最新的稳定版本,它提供了对Office 2003和2007文件格式的兼容性。 Apache POI的核心功能包括: ...
Apache POI 3.6 版本是Java开发人员处理Excel文件的重要工具,无论是在数据分析、报表生成还是自动化任务中,都能发挥重要作用。尽管后来的版本添加了更多功能和优化,但3.6版依然可以满足许多基本需求,并且对于...
1. **Java导出生成Excel**:使用POI,开发者可以在Java程序中动态生成Excel文件。这在数据分析、报表生成或用户下载数据时非常有用。例如,你可以创建一个工作簿对象,添加工作表,然后在工作表上填充数据行和列。...
Apache POI 是一个开源项目,专门用于处理...综上,"poi-bin-3.6-20091214"是开发Java应用中处理Office文档的利器,尤其在需要进行批量数据导入、导出或者自动化办公场景下,Apache POI 的强大功能将大大提升开发效率。
7. **模板方法**: 使用POI,你可以创建Excel模板并填充数据,这对于批量生成报告或邮件合并非常有用。 8. **兼容性**: 虽然POI 3.6是较早的版本,但它仍然支持基本的读写操作,适用于许多应用场景。然而,对于较新...
总的来说,Apache POI 和 JExcelAPI 都是强大的工具,能够帮助Java开发者生成Excel报表。根据项目的具体需求和复杂性,可以选择适合的库进行使用。在实际开发中,务必确保选择的库版本与Java环境兼容,并根据项目...
在本文中,我们将深入探讨如何使用Apache POI(POI-3.6.jar版本)来实现Excel的导入和导出功能。这是一项关键技能,尤其是在数据处理和报告生成的场景中。 **1. POI基础** Apache POI提供了HSSF和XSSF两个API,...
### 使用Apache POI导出Excel 2007并避免内存溢出问题 #### 背景介绍 在处理大量数据时,使用Java导出Excel文件可能会遇到内存溢出的问题,尤其是在导出Excel 2007(.xlsx格式)时更为常见。这是因为传统的`...
标题中的"poi-3.6-20091214.jar"是一个Apache POI项目的版本号,它是Java平台上处理Microsoft Office格式文档的一个库,主要用于读写Excel(.xls)文件。Apache POI是一个开源项目,允许开发者使用Java来创建、修改...
使用POI筛选字段导出Excel,以及条件查询和指定数据导出
1. poi-3.6-20091214.jar:这是Apache POI的主要库文件,包含了处理Excel、PowerPoint和其他Office格式的基础功能。你可以使用这个库来创建、修改和读取这些文件,例如,生成工作表、添加公式、设置单元格样式等。 2...
在这个“POI报表导出excel”的案例中,我们将深入探讨如何使用POI 3.6版本来实现报表的导出,包括设置Excel样式、合并单元格以及处理多表头的合并。 首先,我们需要了解Apache POI的核心组件:HSSFWorkbook(用于...
标题“poi_3.6 all rar”指的是Apache POI项目的一个特定版本,即3.6版的全套RAR压缩包。Apache POI是一个流行的开源库,主要用于处理Microsoft Office格式的文件,如Word、Excel和PowerPoint。这个压缩包包含了POI ...
HSSF和HWPF分别用于处理老版本的BIFF格式(Excel 97-2007)和Word 97-2007格式,而XSSF和XWPF则用于处理Office Open XML(OOXML)格式的新版Excel和Word文件。 2. `poi-ooxml-3.16.jar`:这个库提供了对OOXML格式的...
在JavaWeb开发中,Apache POI常被用来处理服务器端的Excel文件操作,例如生成报表、导入导出数据或者进行自动化测试。通过这些jar包,开发者可以方便地读取Excel数据,将其与数据库交互,或者根据需求动态生成复杂的...
确保在项目中正确引入Apache POI的JAR包,例如`Apache POI3.6.jar`,这样你就可以在Java代码中使用它的API了。开发过程中,记得处理异常,例如`FileNotFoundException`, `IOException`等,确保程序的健壮性。 总之...
标题中的"poi-3.6-20091214.jar"是Apache POI项目的特定版本(3.6版,发布于2009年12月14日)的Java档案文件,它是用来处理Microsoft Office格式的开源库。Apache POI允许开发者在Java应用程序中读取、写入和修改...
在实际应用中,这样的工具类通常会被设计成一个独立的服务,接收参数(如SQL查询、输出文件路径等),执行查询并生成Excel文件。使用者只需要调用这个服务并传入必要的参数,就能轻松地完成数据导出。 综上所述,...
在实际使用这个项目时,开发者首先需要配置Apache POI库到他们的项目构建路径中,然后可以通过调用`POIHelper`类的方法,传入必要的数据和配置,来生成Excel文件。例如,他们可能需要提供数据列表、工作表名称、列...