Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用outputstream上载时文件已损坏_Java_Excel_File Upload_Outputstream_Aspose - Fatal编程技术网

Java 使用outputstream上载时文件已损坏

Java 使用outputstream上载时文件已损坏,java,excel,file-upload,outputstream,aspose,Java,Excel,File Upload,Outputstream,Aspose,每次我上传带有部分数据的excel时,上传的文件都会损坏,我无法在aspose工作簿中使用此上传的文件(在某些情况下,它也可以工作,我不知道为什么)。即使我打开这个,excel也会显示损坏的文件messaage。下面是代码片段 InputStream stream = file.getInputStream(); OutputStream os = new FileOutputStream("path_to_xlsFile.xls"); BufferedOutputStream bos =

每次我上传带有部分数据的excel时,上传的文件都会损坏,我无法在aspose工作簿中使用此上传的文件(在某些情况下,它也可以工作,我不知道为什么)。即使我打开这个,excel也会显示损坏的文件messaage。下面是代码片段

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:结构化存储文档中的FAT似乎已损坏。
位于com.aspose.cells.py.b(未知来源)
位于com.aspose.cells.py.b(未知来源)
位于com.aspose.cells.py。(未知来源)
位于com.aspose.cells.Workbook.a(未知源)
位于com.aspose.cells.Workbook.open(未知源)

java.lang.IllegalStateException:结构化存储似乎已损坏。
在com.aspose.cells.mm.(未知来源)
位于com.aspose.cells.py.c(未知来源)
位于com.aspose.cells.py.b(未知来源)
位于com.aspose.cells.py。(未知来源)
位于com.aspose.cells.Workbook.a(未知源)
位于com.aspose.cells.Workbook.open(未知源)

java.lang.IllegalArgumentException:长度
在com.aspose.cells.b.a.d.h.b(未知来源)
位于com.aspose.cells.py.c(未知来源)
位于com.aspose.cells.py.b(未知来源)
位于com.aspose.cells.py。(未知来源)
位于com.aspose.cells.Workbook.a(未知源)
位于com.aspose.cells.Workbook.open(未知源)
编辑 如果我使用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)
java.lang.IllegalStateException:结构化存储文档中的FAT似乎已损坏。
位于com.aspose.cells.py.b(未知来源)
位于com.aspose.cells.py.b(未知来源)
位于com.aspose.cells.py。(未知来源)
位于com.aspose.cells.Workbook.a(未知源)
位于com.aspose.cells.Workbook.open(未知源)

嗯,您似乎从模板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担任支持开发人员/福音传道者。

文件大小是否相同?@ScaryWombat不,它们大小不同。你是说我上传的文件,它们的大小?对吗?您应该使用Apache POI。@谢谢您的建议,但我没有选择权,只能使用它。我也必须保存它,即使使用工作簿.save(outputstream,SaveFormat.EXCEL_97_to_2003),我也无法将其保存为损坏的文件,工作簿.save正在向其抛出异常。工作簿=新工作簿(fis);这也给出了java.lang.IllegalStateException:结构化存储文档中的FAT。。。。此例外情况我认为您的文件不是有效的Excel文件或已损坏,因此您将无法通过MS Excel和Aspose.Cells API打开该文件。如果您仍然能够通过MS Excel而不是Aspose.Cells打开该文件,请共享该文件(您可以将该文件上载到某些文件共享服务(例如dropbox)并粘贴下载链接),我们将很快进行检查。
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)
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);