java - 如何解决Word文档中的包应包含内容类型部分[M1.13]

标签 java apache-poi

我正在尝试使用 Apache POI 在 Word 文件中创建 header ,但我得到,包应包含内容类型部分 [M1.13] 异常。我正在使用以下 jar

dom4j-1.7-2.jar
poi-ooxml-3.9-2.jar
poi-3.9.jar
poi-scratchpad-3.9.jar
xmlbeans-2.4.0.jar
openxml4j.jar
poi-ooxml-schemas-3.9.jar

我尝试运行的代码是

   public class TestHeader {

/**
 * @param args
 * @throws IOException
 * @throws XmlException
 */
public static void main(String[] args) throws IOException, XmlException {
    InputStream input = new FileInputStream("D:\\test.docx");
    XWPFDocument document = new XWPFDocument(input);
    XWPFHeaderFooterPolicy headerPolicy = new XWPFHeaderFooterPolicy(
            document);

    XWPFHeader header = headerPolicy.getDefaultHeader();
    List<XWPFTable> table = header.getTables();

    for (XWPFTable xwpfTable : table) {
        xwpfTable.getRow(1).getCell(0).setText("aaa"); // document.setTable(0,
                                                        // xwpfTable);
        // header.insertTable(1, xwpfTable);
    }
    // System.out.println(header.getTables());
    FileOutputStream out = new FileOutputStream("D:\\test.docx");
    document.write(out);
    out.close();

   }

}

这是我遇到的异常

Exception in thread "main" org.apache.poi.POIXMLException: org.apache.poi.openxml4j.exceptions.InvalidFormatException: Package should contain a content type part [M1.13]
at org.apache.poi.util.PackageHelper.open(PackageHelper.java:41)
at org.apache.poi.xwpf.usermodel.XWPFDocument.<init>(XWPFDocument.java:120)
at com.core.poi.TestHeader.main(TestHeader.java:24)
Caused by: org.apache.poi.openxml4j.exceptions.InvalidFormatException: Package should contain a content type part [M1.13]
at org.apache.poi.openxml4j.opc.ZipPackage.getPartsImpl(ZipPackage.java:178)
at org.apache.poi.openxml4j.opc.OPCPackage.getParts(OPCPackage.java:662)
at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:269)
at org.apache.poi.util.PackageHelper.open(PackageHelper.java:39)
... 2 more

请有人帮助我。

最佳答案

如果我在 intellij 中创建文件,我也会遇到此异常。

New -> file -> with word.docx name.

我们应该使用 openoffice/word/libreoffice 创建一个 .docx 文件并保存它,然后将其复制到目标文件夹中。

关于java - 如何解决Word文档中的包应包含内容类型部分[M1.13],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27582610/

相关文章:

java - 删除按钮的矩形边框

java - 如何获取单元格的列字母?

java - 将 Excel 转换为 .csv 文件时,我无法转换日期并将其保存在 csv 文件中?

java - 使用 Apache Poi 生成批量 excel 文件时出现套接字异常

java - 如何告诉项目下载内部依赖?

java - 如何从静态main中正确访问非静态repaint()方法?

java - 为什么我应该将 MetadataSourceAdapter 与 MOXy 结合使用,而不是直接访问 XML 映射文件?

java - 使类生成短的顺序唯一 ID

java - 如何使用 Apache Poi 添加表格标题下拉列表

java - 该进程无法访问该文件,因为它正被另一个进程使用