Apache POI Excel - 搜索和替换文本

时间:2014-06-28 11:57:42

标签: java excel apache-poi portability

我正在使用Java开发系统,该系统涉及将数据保存到Excel文件而不是保存到数据库。这是客户的要求之一。

我已经使用Java中的Apache POI创建了Excel文件,因此存在问题。但现在我希望有更多可移植的方式来做到这一点。

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

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

谢谢!

1 个答案:

答案 0 :(得分: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其中参数来自config,environment和screen。

然后在找到chars { - 和 - }的工作表中,其中包含查询ID和列ID,例如:

 {-q1.c1-}

将解析它以获取查询ID和列号,如果只有一个结果替换它(摘要数据),否则将其替换为下面的行。

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

如果当前excel存在放入invalud公式的问题,您可以接受属性表中的模板 - 指定列ID和行号,以及包含要替换为程序值的字符串的excel公式