使用Apache poi解析word文档为html文件时出现空指针异常:
org.apache.poi.xwpf.converter.core.XWPFConverterException: java.lang.NullPointerException
at org.apache.poi.xwpf.converter.xhtml.XHTMLConverter.convert(XHTMLConverter.java:77)
at org.apache.poi.xwpf.converter.xhtml.XHTMLConverter.doConvert(XHTMLConverter.java:63)
at org.apache.poi.xwpf.converter.xhtml.XHTMLConverter.doConvert(XHTMLConverter.java:38)
at org.apache.poi.xwpf.converter.core.AbstractXWPFConverter.convert(AbstractXWPFConverter.java:61)
Caused by: java.lang.NullPointerException: null
at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.getXWPFNum(XWPFDocumentVisitor.java:473)
at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.getNumPr(XWPFDocumentVisitor.java:340)
at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.visitParagraph(XWPFDocumentVisitor.java:285)
at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.visitBodyElements(XWPFDocumentVisitor.java:247)
at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.visitTableCellBody(XWPFDocumentVisitor.java:1107)
at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.visitCell(XWPFDocumentVisitor.java:1042)
at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.visitTableRow(XWPFDocumentVisitor.java:946)
at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.visitTableBody(XWPFDocumentVisitor.java:887)
at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.visitTable(XWPFDocumentVisitor.java:869)
at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.visitBodyElements(XWPFDocumentVisitor.java:251)
at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.start(XWPFDocumentVisitor.java:199)
at org.apache.poi.xwpf.converter.xhtml.XHTMLConverter.convert(XHTMLConverter.java:73)
格式化显示为:
org.apache.poi.xwpf.converter.core.XWPFConverterException: java.lang.NullPointerException
at org.apache.poi.xwpf.converter.xhtml.XHTMLConverter.convert(XHTMLConverter.java:77)
at org.apache.poi.xwpf.converter.xhtml.XHTMLConverter.doConvert(XHTMLConverter.java:63)
at org.apache.poi.xwpf.converter.xhtml.XHTMLConverter.doConvert(XHTMLConverter.java:38)
at org.apache.poi.xwpf.converter.core.AbstractXWPFConverter.convert(AbstractXWPFConverter.java:61)
..................
Caused by: java.lang.NullPointerException: null
at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.getXWPFNum(XWPFDocumentVisitor.java:473)
at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.getNumPr(XWPFDocumentVisitor.java:340)
at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.visitParagraph(XWPFDocumentVisitor.java:285)
at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.visitBodyElements(XWPFDocumentVisitor.java:247)
at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.visitTableCellBody(XWPFDocumentVisitor.java:1107)
at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.visitCell(XWPFDocumentVisitor.java:1042)
at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.visitTableRow(XWPFDocumentVisitor.java:946)
at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.visitTableBody(XWPFDocumentVisitor.java:887)
at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.visitTable(XWPFDocumentVisitor.java:869)
at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.visitBodyElements(XWPFDocumentVisitor.java:251)
at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.start(XWPFDocumentVisitor.java:199)
at org.apache.poi.xwpf.converter.xhtml.XHTMLConverter.convert(XHTMLConverter.java:73)
解决:看到空指针异常,很多人首先会认为是自己的代码写错了。事实上,这是Apache组件写的很粗糙造成的,该判空的地方没有判空。这里有两个地方出现了控制异常。出现问题的地方估计就是两个了。
第一个空指针出现在RunUnderlineValueProvider类(package org.apache.poi.xwpf.converter.core.styles.run;)。看到这个U,我猜想是解析下划线或者是表格出现了错误。

此处在进行rPr.getU().getVal()操作时没有进行判空操作,出现了空指针异常。
解决:在自己的工程下创建一个一模一样的包,然后创建一个一模一样的类,并更改为下面代码:
package org.apache.poi.xwpf.converter.core.styles.run;
import java.util.Objects;
import org.apache.poi.xwpf.converter.core.styles.XWPFStylesDocument;
import org.apache.poi.xwpf.usermodel.UnderlinePatterns;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRPr;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTUnderline;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STUnderline.Enum;
public class RunUnderlineValueProvider extends AbstractRunValueProvider<UnderlinePatterns> {
public static final RunUnderlineValueProvider INSTANCE = new RunUnderlineValueProvider();
@Override
public UnderlinePatterns getValue(CTRPr rPr, XWPFStylesDocument stylesDocument) {
if (Objects.isNull(rPr)) {
return null;
if (rPr.isSetU()) {
CTUnderline ctu = rPr.getU();
if (Objects.nonNull(ctu)) {
Enum val = ctu.getVal();
if (Objects.nonNull(val)) {
return UnderlinePatterns.valueOf(val.intValue());
return null;
第二个空指针出现在XWPFDocumentVisitor类(package org.apache.poi.xwpf.converter.core;),下面的红框内即是出现空指针的地方。

解决:在自己的工程下创建一个一模一样的包,然后创建一个一模一样的类,并修改图示代码为:
protected XWPFNum getXWPFNum(CTNumPr numPr) {
CTDecimalNumber numID = numPr.getNumId();
if (Objects.isNull(numID)) {
return null;
XWPFNumbering numbering = document.getNumbering();
if (Objects.isNull(numbering)) {
return null;
XWPFNum num = numbering.getNum(numID.getVal());
return num;
两处包名为:

Apache POI解析word为html出现:......converter.core.XWPFConverterException: java.lang.NullPointerException
使用Apache poi解析word文档为html文件时出现空指针异常:报错一:org.apache.poi.xwpf.converter.core.XWPFConverterException: java.lang.NullPointerExceptionat org.apache.poi.xwpf.converter.xhtml.XHTMLConverter.convert(XHTMLC...
org.apache.poi:poi:4.1.2
org.apache.poi:poi-ooxml:4.1.2
org.apache.poi:poi-ooxml-schemas:4.1.2
org.apache.xmlbeans:xmlbeans:3.1.0
com.github.virtuald:curvesapi:1.06
com.zaxxer:SparseBitSet:1.2
commons-codec:commons-codec:1.13
org.apache.commons:commons-collections4:4.4
org.apache.commons:commons-math3:3.6.1
org.apache.commons:commons-compress:1.19
最近被word逼疯,不仅要导出各种报告,还要附带表格,所以写了一个docx转pdf以供参考。创建docx导出表格的时候遇到的问题完整的代码
之前用XWPFDocument生成的docx在转pdf的时候总是会报java.lang.IllegalStateException: Expecting one Styles document part, but found 0。
转出来的pdf总是会损坏,给我气够呛,网上找了办法使用doc.createStyles();
然后又给我报什么文件提前结束?或者SAXPar
poi docx转html遇到空指针问题或java.lang.NoClassDefFoundError: org/apache/poi/xwpf/usermodel/IRunBody
poi 3.14下报错:
org.apache.poi.xwpf.converter.core.XWPFConverterException: java.lang.NullPointerException
at org.apache.poi.xwpf.converter.xhtml.XHTMLConverter.convert(XHTMLConverter.java:77)
at org.a