设计用于在java中读取大型excel文件的应用程序时出现问题

时间:2012-04-14 11:38:36

标签: java apache-poi

目前我正在构建一个示例应用程序,该应用程序应该读取一个中等巨大的Excel工作表(10-15MB),然后选择几列并创建与excel工作表中的行数一样多的文本文件,但仅包含列已选中。

例如为了清楚起见。 假设我的xl工作表包含5列Name,empid,email,mobileNo:和地址以及总行数或记录是50000.现在我想创建50000个文本文件,每个文件包含Name,mobileNo:和仅限emailId

由于excel表的大小很大,excel表可以是xlsx或xls,我使用apache poi来读取它。但在此之后我无法确定任何最佳方法。

方法1:我是否应该尝试将整个Excel工作表移动到像mysql这样的数据库。因此,我必须根据检索到的标题列动态创建一个表,并将其中的所有行转储。然后使用select查询我可以获得必要的列并创建文本文件

方法2:我读到了可以动态创建类文件的ASM库。我在考虑每行创建一个对象并将所有内容添加到列表中。但是在这里检索特定列将涉及大量迭代,并且列表的大小将与excel表中的行成比例,这将是巨大的。

目前我无法决定任何方法。我确信两种方法都很糟糕:(。任何有关如何进行的建议对我都有很大的帮助。

1 个答案:

答案 0 :(得分:1)

为什么不创建一个内存数据结构来保存电子表格的信息内容并从中开始工作。

它可以是一个简单的字符串数组列表,其中每个数组代表一行。要处理列名,请使用将列名映射到列号的哈希映射。


你的方法1过度杀死......除非电子表格太大而无法存储在内存中。

您的方法2不必要地复杂化。动态创建类文件无法实现通过简单的通用数据结构无法实现的任何功能。