使用POI在Java中打开Excel文件会导致错误InvalidFormatException:包应包含内容类型部分[M1.13]

时间:2017-11-01 15:50:24

标签: java excel apache-poi

我已经看过几个处理此错误的帖子,但没有一个帖子解决了我遇到的具体问题。

这是我正在测试的代码。

public class CicTemplateTest {

public static void main(String[] args) {
    try {
        new CicTemplateTest().process();
        System.out.println("DONE xlsx");
    } catch (Exception e) {
        e.printStackTrace();
    }
}

public void process() throws Exception
{
    String inputFileName = "Test.xlsx";

    String folder = "/Temp3/formaterror/";

    File file = new File(folder + inputFileName);
    FileInputStream inputStream = new FileInputStream(file);

    Workbook wb = new XSSFWorkbook(inputStream);  // line where error occurred

    OutputStream out2 =  new FileOutputStream(new File(folder+"JunkFile.xlsx"));

    wb.write(out2); 
    out2.flush(); 
    out2.close();
}

}

这是我得到的错误。

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:39)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:274)
at com.aquent.sdc.jeffk.poiftest.CicTemplateTest.process(CicTemplateTest.java:41)
at com.aquent.sdc.jeffk.poiftest.CicTemplateTest.main(CicTemplateTest.java:25)

有问题的文件不是XLS文件。它似乎是一个奇怪的XLSX文件形式。我希望我可以共享该文件,但我不能因为数据是专有的。我以前必须解压缩XLSX文件并且对内容有点熟悉。当我解压缩此文件时,内容看起来不正常。

List of files in XLSX file

那里没有XML文件。我检查了XLSX中的每个文件,它们都是二进制文件。没有文本文件,没有XML文件。它根本不像普通的XLSX文件。

它在Excel中打开很好,如果我保存它,保存的文件是一个普通的XLSX文件,示例代码工作正常。

我们每年约有1000名用户提交这些文件,大约15%的用户以这种格式来找我们。我认为大多数格式问题的文件来自北美以外的地区。

我尝试使用POI ver 3.9和3.14读取文件并获得相同的错误。

我有两个问题。

用户如何创建这些文件?

如何让我的应用程序打开这些文件?

0 个答案:

没有答案