当前位置: 首页 > 面试题库 >

使用Apache POI的PatternSyntaxException

相弘方
2023-03-14
问题内容

我在两个不同的项目中使用Apache POI

第一个项目是一个独立的Java应用程序。这里一切都很好。

第二个项目是一个Android项目。我可以很好地访问xlsx的工作簿,但是在计算公式时,它会因异常而崩溃

java.util.regex.PatternSyntaxException: U_ILLEGAL_ARGUMENT_ERROR \P{IsL}
   at java.util.regex.Pattern.compileImpl(Native Method)
   at java.util.regex.Pattern.compile(Pattern.java:411)
   at java.util.regex.Pattern.<init>(Pattern.java:394)
   at java.util.regex.Pattern.compile(Pattern.java:381)
   at org.apache.poi.ss.formula.functions.TextFunction$5.<init>(TextFunction.java:124)
   at org.apache.poi.ss.formula.functions.TextFunction.<clinit>(TextFunction.java:123)

这是有问题的代码行:

    final Pattern nonAlphabeticPattern = Pattern.compile("\\P{IsL}");

Android为什么不接受呢?就像我说的那样:它在独立的Java应用程序上工作正常。


问题答案:

Android使用的ICU regex库与Java regex引擎有些不同。

看到
这个参考


Unicode脚本,块,类别和二进制属性使用Perl中的\p\P构造编写。\p{prop}如果输入具有属性prop则\P{prop}匹配,而如果输入具有属性prop
则不匹配。

因此,该模式应写为

Pattern nonAlphabeticPattern = Pattern.compile("\\P{L}");


 类似资料:
  • 我已经编写了用于编写xlsm(Excel2007)的java文件。 使用ApachePOI库,编写xlsx文件是成功的。编写xlsm文件是成功的。但我无法打开xlsm文件,因为打开xlsm文件时出错。 使用ApachePOI库编写xlsm文件可行吗? 如果可以编写xlsm,请提供如何使用ApachePOI库编写xlsm文件的指南。 谢谢

  • 用户可以将Excel文档保存为. xls或xml-table。结果是一个具有固定结构的xml-file,Excel可以用它纠正工作。 可以用java中的ApachePOI打开这种类型的excel文件吗? 事先谢谢你,安德烈。

  • 我在jsf中学习一个网络共享项目。在这个项目中,用户可以上传文档,如. doc、. pdf、. ppt等。我想将该文档的第一页显示为缩略图。经过一番谷歌搜索,我找到了Apache POI。有人对我的问题有什么建议吗?我如何返回word doc第一页的缩略图图像?我尝试了这段代码。这段代码只得到word doc包含的第一张图片:

  • 我正在使用Apache POI读取零件编号电子表格中的数据。我在我们的数据库中查找零件编号,如果我们有零件的计算机辅助设计图纸,我将零件编号单元格涂成绿色,如果没有,我将其涂成红色。处理完成后,将保存电子表格。我遇到的问题是那列中的每个细胞都是绿色的。我已经完成了代码,查找零件号的逻辑工作正常,确定单元格应该是什么颜色以及设置颜色和填充的逻辑似乎也工作正常。知道我做错了什么吗? 谢谢

  • 我有点迷失了 我试过3.17、4.0.0和5.0.0版。 或 我无法获得没有弃用或类型错误的代码:-( 我将Eclipe与Maven和Java11一起使用。在版本发布之后,我做了“更新项目”来更新Maven。

  • 我正在尝试用android显示PPT文件。我从ApachePOI开始,bcoz我还没有找到任何免费的开源jar。我从将ppt幻灯片转换为图像开始,参考此链接将PowerPoint幻灯片导出为java。awt。图表2D 这是Java语言。我找不到Dimension、BuffereImage和Graphics2D类。我已经导入了poi-scratchpad-3.8-20120326。jar在我的构建路

  • 嗨,我想在第一行搜索一个字符串,如果找到了,我想移动那一列。

  • 在xlsx工作簿中,有些单元格具有一些无界的SUMIF公式,如下所示:。使用ApachePOI5.0.0对一个SUMIF函数的评估持续100ms,对给定工作簿的评估持续几分钟。 提高执行持续时间的一种方法是将公式绑定到如下内容:。在我的情况下,这不是一个解决方案,因为我不是xlsx文件的作者,系统从未知的人那里获取未知的xlsx文件(因此我不能仅仅告诉他们限制SUMIF范围)。 的当前实现迭代给定