2013-12-12 25 views
0

问题描述:我想在Excel工作表中加载图像像素数据。一个用于满足我的要求的java excel api?

我曾尝试:使用Apache POI写脱颖而出的数据,但我发现有在Apache的POI一定的局限性(如下详述) 我已经知道一些解决方法,这是在部分繁琐的的程序员,我真的不愿意为这样一个微不足道的任务做这件事。

详情:

我一直在使用Apache POI相当长的一段时间,我所遇到的一些限制:

  • 整个文件是在内存中一次,所以不能使用直接用于大文件。

(特定于HSSF):

  • 不超过255个列
  • 不超过4000种的单元格样式
  • 不能使用自定义颜色直接。

我的要求是逐像素地读取一个图像(比如1024x764),并在excel表格的行和列中写入像素值,每个不同的像素值的样式都是不同的。

我所面对的问题是:

  • 出存储器异常的,而写因为许多行/列和样式
  • 写入逻辑重用样式会减慢到excel工作表,整个程序
  • 即使我重用的风格,做一下行数量庞大什么/列

我已经知道有变通办法这些问题:

  • 重用风格
  • 的内存使用效率
  • 写作逻辑

,但我不打算花太多的痛苦一份工作那样简单,而且由于这些都不是直接的Excel的限制(至少不是.xlsx),我正在寻找一个可以为我做的图书馆。

有人可以请建议另一个库可以做到这一点,或者你可以建议一些更容易解决这些问题的解决方法?

+0

您可能需要考虑对此进行重新说明(可能是要求对所述问题采取有效的方式?),因为对图书馆推荐的请求可能会被视为与主题无关。 – pnuts

+0

我编辑了这个问题,并在顶部添加了相关信息。 我不相信这个查询**吸引褒奖的答案和垃圾邮件**因为我有一个有效的,具体的要求集,我正在寻找答案,并寻找另一个可能没有太多负担的程序员。 – gaurav5430

回答

2

有人可以提出一个好的图书馆要做到这一点,否则我会从Java变成CSHARP

总之,没了 - 的POI库,以我的经验,最好的可用为了工作。他们并不完美,但我不知道更好的替代方案。你可能想尝试checking trunk out,看看你的任何问题是否已经解决 - 完全可能,这是一个相对活跃的项目。

我建议看着唯一的其他东西是OpenOffice API,但要安装注意,需要OO(或您的应用程序分发。)

坦率地说,虽然,POI的实力是它的跨平台性 - 这是一个没有本地组件的纯Java实现。如果你不关心这件事,那么可以使用C#并使用本地办公室API,这看起来肯定是合乎逻辑的方法?对我来说,你已经没有这样做了,这似乎很奇怪。

+0

我没有这样做,因为我正在寻找一个Java解决方案。 c#必须是我最后的手段。我希望在java中有更简单的方法来完成这个简单的任务(将图像像素数据复制到excel) – gaurav5430

0

JExcelApi的 http://jexcelapi.sourceforge.net/

它工作在声明模式,如Adobe生命周期ËJReport的:你创建一个模板文件XLS andin你把参考豆每一个细胞。

调用引擎,结束你有一个XLS文件。

对不起,我的工作很多年了,我不记得细节,但在网站上有文档。

+1

完全正确,但OP明确需要XLSX支持,这是一项功能这在jExcelAPI – fvu

+0

中非常缺失我也非常确定jExcelAPI(当我至少使用它时)仍然将整个文件一次保存在内存中? – berry120