java 从后台下载xlsx格式excel 发现不可读取内容的解决方案
2018-03-06 13:09
537 查看
这种问题是因为没加 Content-Length
需求1:从服务端下载excel模板
这个好办,找到服务端保存的模板,getResourceAsStream拿到输入流,设置Content-length
注意输入流的大小是 public int available() throws IOException {
return 0;
}这个方法
response.setHeader("Content-Length", String.valueOf(resourceAsStream.available()));这样就不会报截图的错了
需求2:在程序里生成了workbook导出
这个有点麻烦,因为workbook只提供了write写出到输出流
我提供的方案有点麻烦,希望大佬看到可以给出更好的解决办法!
解决方案:将workbook写入ByteArrayOutputStream
将ByteArrayOutputStream转成byte数组
public synchronized byte toByteArray()[] {
return Arrays.copyOf(buf, count);
}这个方法
然后把生成的byte数组放入输入流中ByteArrayInputStream in = new ByteArrayInputStream(byteArray);剩下的和上面一样
response.setHeader("Content-Length", String.valueOf(in.available()));
附上第一个需求的代码
InputStream resourceAsStream = ExcelUtils.class.getResourceAsStream("/template/" + fileName);
response.setHeader("Content-Length", String.valueOf(resourceAsStream.available()));
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader("Content-disposition", "attachment;filename=" + fileName);
OutputStream ouputStream = response.getOutputStream();
// 循环取出流中的数据
byte[] b = new byte[1024];
int len;
while ((len = resourceAsStream.read(b)) > 0) {
ouputStream.write(b, 0, len);
}
resourceAsStream.close();
ouputStream.flush();
ouputStream.close();
相关文章推荐
- java tomcat jboss excel 2007 xlsx 下载 发现不可读取内容 解决办法
- java下载的excel显示发现不可读取的内容。是否恢复此工作薄的内容?如果信任此工作薄的来源,请单击‘是’。”
- Java Excel在“xxx.xlsx”中发现不可读取的内容。是否恢复此工作薄的内容?如果信任此工作簿的来源,请点击"是"
- 问题:Excel在“xxx.xlsx”中发现不可读取的内容。是否恢复此工作薄的内容?【原创】
- Excel发现不可读取内容的解决方案
- java读取excel(xlsx格式)内容为string
- Java 实现导出excel表 POI/Java实现不同excel格式(*.xls、*.xlsx)文件的读取
- java处理excel-xlsx格式大文件的解决方案
- web工程导出Excel文件打开时显示“Excel在 ** 中发现不可读取的内容。是否恢复此工作簿的内容?....”
- java读取Excel的方法,解析xls、xlsx两种格式
- 解决Excel 2007的"有 XML 错误的 /xl/sharedStrings.xml"问题 (“发现不可读取的内容,是否回复此工作薄的内容...")
- Java 读取 Excel(xls、xlsx格式)
- java读取excel格式的内容(APACHE POI)
- JAVA读取Excel任何格式的内容
- java的poi技术下载Excel模板上传Excel读取Excel中内容(SSM框架)
- Java读取Excel的方法,解析xls、xlsx两种格式
- java读取Excel的方法,解析xls、xlsx两种格式
- java 读取excel,写入excel(只限于xlsx格式)
- ExcelLibrary 导出Excel报 “excel发现不可读取的内容”错误
- Java实现不同excel格式(*.xls、*.xlsx)文件的读取