2014-06-28 122 views
2

我正在使用Java开发系统,它涉及将数据保存到Excel文件而不是保存到数据库。这是客户的要求之一。Apache POI Excel - 搜索并替换文本

我已经完成了使用Java的Apache POI创建Excel文件,所以与此问题。但现在我想有更便捷的方式来做到这一点。

我想要一个Excel模板,这样用户可以设计自己的输出。数据将被占位符替换插入到Excel中。

我的问题是,有没有办法在使用Apache POI的Excel中替换一些文本?

谢谢!

回答

0

我不认为POI有这个内置。它是一个低级别的API,可以在任何环境下读取和写入Excel,甚至可以在没有安装excel的情况下使用,也不可能(仅适用于二进制文件格式)。所以你必须自己建立这个,但不是太难。

已经做了一个项目,用户可以命名具有特定值的单元格,然后代码将查找这些单元并将它们用作插入数据的地方的提示。因此,您可能需要提出格式并写入代码根据需求自行穿过第n行。

我们曾经解析前10行和50列,找出在哪里放置标题信息,摘要等,然后详细数据,并移动到另一个数据表中超过x行。它工作得非常好,以至于为1个报告编写的代码可以用于其他2个没有修改的代码。

对于数据库端 - 必须定义查询,然后在另一个属性表中引用它们。

的符号是这样的

q1=select c1,c2 ... where c1=p1 and c2=p2 

q2=select c1,c2,c3 from ... where c1 = p3 

其中P1,P2,其中从配置,环境和屏幕的参数。

{-q1.c1-} 

将解析得到查询ID和列数,如果只有一个:{ - - 和}与查询ID和列ID它们之间例如

在发现字符床单

然后结果将其替换(摘要数据),否则将其替换为下面的行。

这些也可能是excel公式的一部分 - 当excel由用户创建时,公式将会是invalud,但是在我们替换值后,它们将开始工作。

如果当前Excel有把invalud公式的问题,你可以接受属性表模板 - specifyinf列名和行号,和Excel公式包括字符串与你的程序的值来代替

+0

我已经阅读你的答案,并以某种方式不符合我的要求。我们不会使用数据库服务器,所以我不能有SQL查询。但是我明白你在你的项目中所做的一切。顺便说一下,在我发布这个问题一小时后,我想出了我的痛苦。我会发布它来回答我的问题,以便任何人都可以将它用作基本代码。还**感谢你分享你的想法。 –

+0

由于我的名誉低,我不能回答我的问题。我将在这里发布, '我设法拥有了一个包含占位符的Excel模板。通过这种方式,用户可以根据开发人员给定的占位符来定制他们的Excel报告。 代码链接: ** http://pastebin.com/kKfLTwcY** 已用过的pastebin发布整个类的全部源代码。 如果你需要OSValidator的来源, ** http://pastebin.com/ybVZR2yJ** 我希望这对大家有帮助! –