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

时间:2014-12-20 17:31:03

标签: java apache-poi

我正在尝试使用Apache POI在word文件中创建标题,但我得到,Package应包含内容类型部分[M1.13] exception.I正在使用以下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

有人请帮助我。

2 个答案:

答案 0 :(得分:1)

如果我在intellij中创建一个文件,我也会得到这个例外。

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

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

答案 1 :(得分:-2)

请检查您的xls文件名,它不应该像(my.file.xsl)那样 它应该像myfile.xsl