HSSFWorkbook workbook=new HSSFWorkbook();
HSSFSheet sheet=workbook.createSheet("运单记录");
//得到首行
HSSFRow headRow=sheet.createRow(0);
//设置首行列信息
headRow.getCell(0).setCellValue("运单号");
headRow.getCell(1).setCellValue("寄件人");
headRow.getCell(2).setCellValue("寄件人电话");
headRow.getCell(3).setCellValue("寄件人地址");
headRow.getCell(4).setCellValue("收件人");
headRow.getCell(5).setCellValue("收件人电话");
headRow.getCell(6).setCellValue("收件人地址");
//遍历数据集合,将数据赋值到xls表格内
for (WayBill wayBill : wayBills) {
//创建行
HSSFRow row=sheet.createRow(sheet.getLastRowNum()+1);
row.getCell(0).setCellValue(wayBill.getWayBillNum());
row.getCell(1).setCellValue(wayBill.getSendName());
row.getCell(2).setCellValue(wayBill.getSendMobile());
row.getCell(3).setCellValue(wayBill.getSendAddress());
row.getCell(4).setCellValue(wayBill.getRecName());
row.getCell(5).setCellValue(wayBill.getRecMobile());
row.getCell(6).setCellValue(wayBill.getRecAddress());
}
//下载导出
//设置头信息
ServletActionContext.getResponse().setContentType("application/vnd.ms-excel");
String filename="运单数据.xls";
//获取服务器浏览器类型
String agent=ServletActionContext.getRequest().getHeader("user-agent");
//返回处理中文乱码后的filename
filename=FileUtils.encodeDownloadFilename(filename, agent);
//文件命名
ServletActionContext.getResponse().setHeader("Content-Disposition", "attachment; filename="+filename);
//复制文件
//输出流
ServletOutputStream outputStream=ServletActionContext.getResponse().getOutputStream();
workbook.write(outputStream);
//关闭
workbook.close();
附加上使用的工具类:
import java.io.IOException;
import java.net.URLEncoder;
import sun.misc.BASE64Encoder;
@SuppressWarnings("all")
public class FileUtils {
/**
* 下载文件时,针对不同浏览器,进行附件名的编码
*
* @param filename
* 下载文件名
* @param agent
* 客户端浏览器
* @return 编码后的下载附件名
* @throws IOException
*/
public static String encodeDownloadFilename(String filename, String agent)
throws IOException {
if (agent.contains("Firefox")) { // 火狐浏览器
filename = "=?UTF-8?B?"
+ new BASE64Encoder().encode(filename.getBytes("utf-8"))
+ "?=";
filename = filename.replaceAll("\r\n", "");
} else { // IE及其他浏览器
filename = URLEncoder.encode(filename, "utf-8");
filename = filename.replace("+"," ");
}
return filename;
}
}