问题描述
程序中生成workbook并下载excel,下载后打开提示“发现.xlsx中的部分有问题”,点击尝试修复可正常打开。如图:
解决方法
在response,header中设置Content-Length,具体代码如下:
Workbook wb = ReflectExcelUtils.INSTANCE.getWorkBook(serviceExcelInfoList, ServiceExcelInfo.class);
ResponseUtil.asFileDownload(response,filename);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
wb.write(outputStream);
ByteArrayInputStream tempIn = new ByteArrayInputStream(outputStream.toByteArray());
response.setHeader("Content-Length", String.valueOf(tempIn.available()));
OutputStream out = response.getOutputStream();
byte[] buffer = new byte[1024];
int a;
while ((a = tempIn.read(buffer)) != -1) {
out.write(buffer, 0, a);
}