写法一:优点是在服务器端不产生文件,直接在客户端下载excel
ByteArrayOutputStream baos = new ByteArrayOutputStream();
HSSFWorkbook wb=new HSSFWorkbook();
try {
wb.write(baos);
} catch (IOException e) {
e.printStackTrace();
}
byte[] ba = baos.toByteArray();
ByteArrayInputStream bais = new ByteArrayInputStream(ba);
return bais;
以上代码写在如下的方法体中:
public InputStream getDownloadFile(){}
web端调用的action方法如下:
public String exportTargetList() throws Exception{
String fileName = "xxxx";//可以是汉字
String downloadFileName=new String(fileName.getBytes("gb2312"), "iso8859-1");
ActionContext.getContext().put("downloadFileName", downloadFileName);
return "fileDownloadSuccess";
}
还需要配置struts.xml文件
<result name="fileDownloadSuccess" type="stream">
<param name="contentType">application/vnd.ms-excel,charset=ISO8859-1</param>
<param name="contentDisposition">attachment;filename="${downloadFileName}.xls"</param>
<param name="inputName">downloadFile</param>
</result>
写法二://未做测试,只是记录下来
//通过Response把数据以Excel格式保存
response.reset();
response.setContentType("application/msexcel;charset=UTF-8");
try {
response.addHeader("Content-Disposition", "attachment;filename=\""
+ new String(("用户意见信息表" + ".xls").getBytes("GBK"),
"ISO8859_1") + "\"");
OutputStream out = response.getOutputStream();
workBook.write(out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
return null;