如何使用POI获取excel中列的最大长度

时间:2017-02-09 13:43:14

标签: java excel apache-poi

我正在开发一个涉及使用Apache POI读取Excel数据的项目。 我有一种情况,我必须找出列的最大长度。

例如
一张纸有3行r1,r2,r3和2列c1和c2,并且都包含字符串数据。现在说r1c1中的字符串大小为5,r2c1中为6,r3c1为7。

Apache POI中是否有可用的方法

foo(c1)将返回7.

目前我正在使用foo循环迭代列中的所有单元格并计算最大大小,但是当excel文件很大时它会达到性能。

我浏览了文档但找不到。 for循环只能这样做吗?

为什么我要这个

我必须编写一个应用程序可以在db中上传excel的功能。应该动态创建DDL语句并生成ddl语句,我需要知道列的最大长度。我知道我正在尝试重新发明轮子,因为像MySQL这样的db已经有了这个插件,但在这里我不想使用它,因为我想把所有东西放在一个地方。我浏览了插件的源代码,但是在项目中复制太复杂了。

1 个答案:

答案 0 :(得分:2)

您可以使用getColumnWidth解决问题:如果列中的最大长度始终与列的宽度相匹配(除了左边距和右边距之外没有无用的空间),您可能能够&# 34;猜"只使用列宽并将其除以长度1字符的最大长度应该具有(IF它们都具有相同的长度)。但即使有可能,您也可能需要考虑边距+计算中两个字符之间的微小空间。

使用一般而且非常简单的例子:如果你的列是10个单位并且你知道一个字符的长度为1个单位,那么你知道最大字符串有10个字符。

这是非常非常理论的,因为我现在无法编码任何东西,但这是我能想象的唯一解决方案,除了你已经做过的事情。