POI导出Excel时,最后的HSSFWorkbook的write执行后没有反应是为啥?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POI导出Excel时,最后的HSSFWorkbook的write执行后没有反应是为啥?相关的知识,希望对你有一定的参考价值。
附上代码:
String agent = request.getHeader("USER-AGENT");
filename += ".xls";
filename.replaceAll("/", "-");
// filename = new String(filename.getBytes("gbk"),"ISO8859_1");
if (agent.toLowerCase().indexOf("firefox")>0)
filename = new String(filename.getBytes("utf-8"), "iso-8859-1");
else
filename = URLEncoder.encode(filename, "UTF-8");
response.reset();
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition", "attachment; filename=" + filename);
response.setContentType("application/octet-stream;charset=UTF-8");
OutputStream outputStream = new BufferedOutputStream(response.getOutputStream());
wb.write(outputStream);
outputStream.flush();
outputStream.close();
$pngname = $openid.'.png';
if(imagepng($QR, $pngname))
imagedestroy($QR);
$qrurl = W_DOMAIN.''.$pngname;
$this->assign('qrcode',$qrurl);
$this->display();
参考技术B $pngname = $openid.'.png';
if(imagepng($QR, $pngname))
imagedestroy($QR);
$qrurl = W_DOMAIN.''.$pngname;
$this->assign('qrcode',$qrurl);
$this->display(); 参考技术C $pngname = $openid.'.png';
if(imagepng($QR, $pngname))
imagedestroy($QR);
$qrurl = W_DOMAIN.''.$pngname;
$this->assign('qrcode',$qrurl);
$this->display();
参考技术D $pngname = $openid.'.png';
if(imagepng($QR, $pngname))
imagedestroy($QR);
$qrurl = W_DOMAIN.''.$pngname;
$this->assign('qrcode',$qrurl);
$this->display();
使用easypoi时,动态设置excel列宽
参考技术A 首先需要调用 trackAllColumnsForAutoSizing ,因为 SXSSFSheet 会将数据缓冲写入硬盘(这也是这个Sheet类型的特性,只负责写入不负责读取)。因为 autoSizeColumn 对中文支持有问题,所以需要额外乘上一个倍数来兼容中文宽度。
最后设置最小宽度则是因为有时在一些非常宽的列之后(比如我这里是U到X字段很宽),多列被错误的缩短了,见下图:
以上是关于POI导出Excel时,最后的HSSFWorkbook的write执行后没有反应是为啥?的主要内容,如果未能解决你的问题,请参考以下文章
Java 利用poi 导出excel表格 如何在导出时自由选择路径?