struts2 导出XLS问题

最近做一个项目要用到导出Excel文件。一个大体的思路就是先在服务器端将这个excel文件生成出来,然后用InputStream流输出。

第一个碰到的问题就是XLS文件的生成,在网上找了一个poi的工具包生成XLS

首先:

// 创建新的 Excel 工作簿
HSSFWorkbook workbook = new HSSFWorkbook();
// 在 Excel 工作簿中建创一个工作表,其名为缺省值 sheet1
HSSFSheet sheet = workbook.createSheet("sheet1");
HSSFRow row = sheet.createRow(0);
// 在一行中创建一个表格
HSSFCell cell = row.createCell((short) 0);
// 设置此单元格中存入的是字符串
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
// 向此单元格中放入值
cell.setCellValue("姓名");


发现 cell.setEncoding和cell.setCellValue这2个方法已经过时。怎么办呢。Google一下发现原来从poi3.0以后会自动的封装值类型了。我们只需要

cell.setCellValue(new HSSFRichTextString("姓名"));


XLS生成好了后。然后在action中的输出流中指向这个文件路径



private String fileName;// 初始的通过param指定的文件名属性

/** 提供转换编码后的供下载用的文件名 */

public String getDownloadFileName() {
String downFileName = fileName;
try {
downFileName = new String(downFileName.getBytes("GBK"), "ISO8859-1");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return downFileName;
}
//要导出文件的PATH
public String downloadSample() throws Exception {
this.fileName="/联系人导入模板.xls";
return "downloadSample";
}
// 导出
public InputStream getInputSampleContacts() throws Exception {
String filePath = ServletActionContext.getServletContext().getRealPath(this.fileName;
log.info(filePath);
XLSExport XLSexpt = new XLSExport(filePath,contactsDAO,groupDAO);
XLSexpt.write();
return new FileInputStream(filePath);
}


在struts.xml中配置


<result name="downloadContacts" type="stream">
<param name="contentType">application/vnd.ms-excel</param>
<param name="inputName">inputSampleContacts</param>
<!-- 使用经过转码的文件名作为下载文件名,downloadFileName属性对应action类中的方法 getDownloadFileName() -->
<param name="contentDisposition">attachment;filename="${downloadFileName}"</param>
<param name="bufferSize">4096</param>
</result>



最后 页面
<a href="<%=basePath%>contacts/downloadContacts.action">导出文件</a>



大体上就是这样了。

几个注意的地方就是


downFileName = new String(downFileName.getBytes("GBK"), "ISO8859-1");

这里如果你不指定"GBK"的话 在windows环境下部署测试是没问题的。如果放到linux 服务器下会出现中文乱码问题。

<param name="contentType">application/vnd.ms-excel</param>


这个是指定输出文件的类型。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值