我正在开发一个涉及使用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已经有了这个插件,但在这里我不想使用它,因为我想把所有东西放在一个地方。我浏览了插件的源代码,但是在项目中复制太复杂了。
答案 0 :(得分:2)
您可以使用getColumnWidth解决问题:如果列中的最大长度始终与列的宽度相匹配(除了左边距和右边距之外没有无用的空间),您可能能够&# 34;猜"只使用列宽并将其除以长度1字符的最大长度应该具有(IF它们都具有相同的长度)。但即使有可能,您也可能需要考虑边距+计算中两个字符之间的微小空间。
使用一般而且非常简单的例子:如果你的列是10个单位并且你知道一个字符的长度为1个单位,那么你知道最大字符串有10个字符。
这是非常非常理论的,因为我现在无法编码任何东西,但这是我能想象的唯一解决方案,除了你已经做过的事情。