Java 获得;IllegalArguementException:参数的值';id';“是出界的”;对于poi apache库?
获取poi(最新版本)apache库的“IllegalArguementException:参数“id”的值超出范围”Java 获得;IllegalArguementException:参数的值';id';“是出界的”;对于poi apache库?,java,apache-poi,Java,Apache Poi,获取poi(最新版本)apache库的“IllegalArguementException:参数“id”的值超出范围” java.lang.IllegalArgumentException: Value for parameter 'id' was out of bounds at org.apache.poi.util.IdentifierManager.reserve(IdentifierManager.java:80) at org.apache.poi.xwpf.usermodel.XW
java.lang.IllegalArgumentException: Value for parameter 'id' was out of bounds
at org.apache.poi.util.IdentifierManager.reserve(IdentifierManager.java:80)
at org.apache.poi.xwpf.usermodel.XWPFRun.<init>(XWPFRun.java:110)
at org.apache.poi.xwpf.usermodel.XWPFParagraph.buildRunsInOrderFromXml(XWPFParagraph.java:126)
at org.apache.poi.xwpf.usermodel.XWPFParagraph.<init>(XWPFParagraph.java:79)
at org.apache.poi.xwpf.usermodel.XWPFDocument.onDocumentRead(XWPFDocument.java:146)
at org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:159)
at org.apache.poi.xwpf.usermodel.XWPFDocument.<init>(XWPFDocument.java:116)
java.lang.IllegalArgumentException:参数“id”的值超出范围
位于org.apache.poi.util.IdentifierManager.reserve(IdentifierManager.java:80)
位于org.apache.poi.xwpf.usermodel.XWPFRun.(XWPFRun.java:110)
位于org.apache.poi.xwpf.usermodel.XWPFParagraph.buildRunsInOrderFromXml(XWPFParagraph.java:126)
位于org.apache.poi.xwpf.usermodel.XWPFParagraph.(XWPFParagraph.java:79)
位于org.apache.poi.xwpf.usermodel.XWPFDocument.onDocumentRead(XWPFDocument.java:146)
位于org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:159)
位于org.apache.poi.xwpf.usermodel.XWPFDocument.(XWPFDocument.java:116)
导致此异常的语句是
XWPFDocument doc=新的XWPFDocument(OPCPackage.open(fis1))代码>
其中fis1
是一个简单的FileInputStream
对象。这显然(至少)发生在LibreOffice的docx文件中
除了使用Microsoft Office重新保存该文档的解决方法外,还可以进行代码修复:
问题是org.apache.poi.util.IdentifierManager在org.apache.poi.xwpf.usermodel.XWPFDocument中初始化为从1开始的ID;但是docx文件可以包含从0开始的(有效)ID
编辑此构造函数调用以从0(而不是1)开始,并生成POI JAR的本地版本后,POI可以正确处理导致上述错误消息的文档。您在FileinputStream中传递的文件路径是什么。该文件来自何处?如果你用Word打开它,它会出错吗?在word+另存为中打开是否生成有效文件?@Sankumarsingh这是文件C:\Users\psehrawa\Documents\MyDocumentFiles的路径\ayussing@alias.com\1641_TEST_27422_reportNew.docx
。希望文件路径不是问题。@Gagravarr文件来源我不知道,但我在使用Microsoft Word打开文件或另存为文件时没有任何问题。仅供参考,这已在POI中修复,从第3版开始应该可以使用。12@centic我试着使用3.12-beta1,来自Maven repo,我仍然遇到这个问题。你能不能在创建一个bug条目的同时创建一个示例文件,以便我们可以更详细地分析这个问题。