Apache POI Excel - 搜索和替换文本
Posted
技术标签:
【中文标题】Apache POI Excel - 搜索和替换文本【英文标题】:Apache POI Excel - Search and replace text 【发布时间】:2014-08-19 10:25:40 【问题描述】:我正在使用 Java 开发系统,该系统涉及将数据保存到 Excel 文件而不是保存到数据库。这是客户的要求之一。
我已经完成了使用 Java 中的 Apache POI 创建 Excel 文件,因此存在问题。但现在我希望有更便携的方式来做到这一点。
我想要一个 Excel 模板,这样用户可以设计自己的输出。数据将通过占位符替换插入 Excel。
我的问题是,有没有办法使用 Apache POI 替换 Excel 中的某些文本?
谢谢!
【问题讨论】:
【参考方案1】:我认为 POI 没有内置此功能。它是一种用于在任何环境中读写 Excel 的低级 API,即使是未安装也无法安装 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
where p1, p2 where 参数来自 config, environment 和 screen.
然后在表格中找到字符 - 和 - 与查询 id 和列 id 之间的例子:
-q1.c1-
将解析它以获取查询 ID 和列号,如果只有一个结果将其替换到位(汇总数据),否则将其替换在那里和下面的行中。
这些也可能是 excel 公式的一部分 - 当用户制作 excel 时,公式将被评估,但在我们替换值后,它们将开始工作。
如果当前的 excel 在放置无效公式时存在问题,您可以接受属性表中的模板 - 指定 inf 列 ID 和行号,以及包含要替换为程序值的字符串的 excel 公式
【讨论】:
我已阅读您的回答,但不知何故不符合我的要求。我们不会使用数据库服务器,所以我不能进行 SQL 查询。但我理解你在你的项目中做了什么。顺便说一句,我在发布这个问题一小时后发现了我的痛苦。我会将其发布以回答我的问题,以便任何人也可以将其用作基本代码。也感谢您分享您的想法。 由于我的声誉很低,我仍然无法回答我的问题。我会在这里发布,I've managed to have an Excel template that contains placeholders. In this way, users can customized their Excel report depending on developers given placeholders. Here's the link for the code: **http://pastebin.com/kKfLTwcY** Used pastebin to post the whole source for the whole class. If you'll need the source for OSValidator, **http://pastebin.com/ybVZR2yJ** I hope this helps for everyone!
以上是关于Apache POI Excel - 搜索和替换文本的主要内容,如果未能解决你的问题,请参考以下文章
无法从Excel读取'java.lang.ClassCastException:org.apache.poi.hssf.usermodel.HSSFCell无法强制转换为java.lang.S