每次当我上传包含部分数据的excel时,上传的文件都会损坏,并且我无法在aspose工作簿中使用这个上传的文件(在某些情况下,它也可以工作,我不知道为什么)。即使我打开这段时间,excel也会显示损坏的文件消息。这是代码片段
InputStream stream = file.getInputStream();
OutputStream os = new FileOutputStream("path_to_xlsFile.xls");
BufferedOutputStream bos = new BufferedOutputStream(os);
int bytesRead;
byte[] buffer = new byte[8192];
while ((bytesRead = stream.read(buffer, 0, 8192)) != -1) {
bos.write(buffer, 0, bytesRead);
}
bos.flush();
bos.close();
os.close();
stream.close();当我通过aspose库打开工作簿时,对于相同的上传文件,我得到的错误是
java.lang.IllegalStateException: The FAT in the structured storage document seems to be corrupted.
at com.aspose.cells.py.b(Unknown Source)
at com.aspose.cells.py.b(Unknown Source)
at com.aspose.cells.py.<init>(Unknown Source)
at com.aspose.cells.Workbook.a(Unknown Source)
at com.aspose.cells.Workbook.open(Unknown Source)或
java.lang.IllegalStateException: The structured storage seems to be corrupt.
at com.aspose.cells.mm.<init>(Unknown Source)
at com.aspose.cells.py.c(Unknown Source)
at com.aspose.cells.py.b(Unknown Source)
at com.aspose.cells.py.<init>(Unknown Source)
at com.aspose.cells.Workbook.a(Unknown Source)
at com.aspose.cells.Workbook.open(Unknown Source)或
java.lang.IllegalArgumentException: length
at com.aspose.cells.b.a.d.h.b(Unknown Source)
at com.aspose.cells.py.c(Unknown Source)
at com.aspose.cells.py.b(Unknown Source)
at com.aspose.cells.py.<init>(Unknown Source)
at com.aspose.cells.Workbook.a(Unknown Source)
at com.aspose.cells.Workbook.open(Unknown Source)编辑
如果我使用file.transferTo(outputFile),那么对于一些文件,我也会得到这个异常
java.lang.IllegalStateException: The FAT in the structured storage document seems to be corrupted.
at com.aspose.cells.py.b(Unknown Source)
at com.aspose.cells.py.b(Unknown Source)
at com.aspose.cells.py.<init>(Unknown Source)
at com.aspose.cells.Workbook.a(Unknown Source)
at com.aspose.cells.Workbook.open(Unknown Source)发布于 2018-05-31 02:43:58
嗯,您似乎从模板XLS文件中获得了某些数据,这可能会否定/破坏整个Excel文件格式规范或标准。因此,字节数组(或流)中提取的文件将不遵循MS Excel文件格式结构或规则。简而言之,文件将被损坏,MS Excel在打开文件时也会显示错误消息,正如您所提到的。对于Aspose.Cells API来说,这可能不是问题。如果运行良好,您可以简单地尝试以下示例代码段(两个中的任何一个)吗:例如,示例代码:
1)
Path path = Paths.get("path_to_xlsFile.xls");
ByteArrayInputStream stream = new ByteArrayInputStream(Files.readAllBytes(path));
Workbook workbook = new Workbook(stream);
.........
2)
String testFileTemplate = "path_to_xlsFile.xls";
FileInputStream fis = new FileInputStream(new File(testFileTemplate));
Workbook workbook = new Workbook(fis); 我在Aspose担任支持开发人员/布道者。
https://stackoverflow.com/questions/50597892
复制相似问题