我已经看过几个处理此错误的帖子,但没有一个帖子解决了我遇到的具体问题。
这是我正在测试的代码。
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文件并且对内容有点熟悉。当我解压缩此文件时,内容看起来不正常。
那里没有XML文件。我检查了XLSX中的每个文件,它们都是二进制文件。没有文本文件,没有XML文件。它根本不像普通的XLSX文件。
它在Excel中打开很好,如果我保存它,保存的文件是一个普通的XLSX文件,示例代码工作正常。
我们每年约有1000名用户提交这些文件,大约15%的用户以这种格式来找我们。我认为大多数格式问题的文件来自北美以外的地区。
我尝试使用POI ver 3.9和3.14读取文件并获得相同的错误。
我有两个问题。
用户如何创建这些文件?
如何让我的应用程序打开这些文件?