java web中使用POI实现excel文件的导入和导出

文件导出

     //导入excle表
public String exportXls() throws IOException{
//1.查询所有需要的数据
List<Subarea> list = subareaService.findAll();
//2.使用POI将数据写进excel表中
//2.1在内存中创建一个excel文件
HSSFWorkbook workbook = new HSSFWorkbook();
//2.2创建一个标签页
HSSFSheet sheet = workbook.createSheet("分区数据");
//2.3创建标题行
HSSFRow headRow = sheet.createRow(0);
headRow.createCell(0).setCellValue("分区编号");
headRow.createCell(1).setCellValue("开始编号");
headRow.createCell(2).setCellValue("结束编号");
headRow.createCell(3).setCellValue("位置信息");
headRow.createCell(4).setCellValue("省市区");
//2.4将需要的数据放入excel表中
for (Subarea subarea : list) {
HSSFRow dataRow = sheet.createRow(sheet.getLastRowNum()+1);
headRow.createCell(0).setCellValue(subarea.getId());
headRow.createCell(1).setCellValue(subarea.getStartnum());
headRow.createCell(2).setCellValue(subarea.getEndnum());
headRow.createCell(3).setCellValue(subarea.getPosition());
headRow.createCell(4).setCellValue(subarea.getRegion().getName());
} //3.输出流进行文件下载
String filename = "分区信息表.xls";
String mimeType = ServletActionContext.getServletContext().getMimeType(filename);
ServletOutputStream outs = ServletActionContext.getResponse().getOutputStream(); //获取客户端的浏览器类型
String agent = ServletActionContext.getRequest().getHeader("User-Agent");
filename = FileUtils.encodeDownloadFilename(filename, agent);
ServletActionContext.getResponse().setHeader("content-disposition",
"attachment;filename"+filename); workbook.write(outs);
return NONE;
}

针对不同浏览器下载使用的工具类

    /**
* 下载文件时,针对不同浏览器,进行附件名的编码
*
* @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;
}

最新文章

  1. 为什么要在游戏开发中使用ECS模式
  2. 算法-MergeSort
  3. Build to win!——获得小黄衫的感想
  4. struts2 xml中重定向
  5. vijos 1025 背包 *
  6. wordpress为不同的category添加不同的模板
  7. ISE MAP报错: Unsupported programming for BSCAN block and JTAG_CHAIN attribute value 1的解决方法
  8. git学习之remote
  9. 用easyui动态创建一个对话框
  10. Effective C++(17) 以独立语句将newed对象置入智能指针
  11. Back to High School Physics - UVa10071
  12. mysql主从复制安装详解
  13. dynamic 类型不能访问属性
  14. Python selenium根据class定位页面元素
  15. 为JQuery EasyUI 表单组件加上“清除”功能
  16. php 压缩文件 zip
  17. Javaweb学习笔记——(八)——————常见系统体系结构,Tomcat,以及web的内部外部应用,http协议概述
  18. 《实时控制软件设计》之Github提交作业步骤
  19. [Node.js] process.nextTick for converting sync to async
  20. leetcode &amp; lintcode 题解

热门文章

  1. Flask—02-Flask会话控制与模板引擎
  2. spring入门(一) 根据xml实例化一个对象
  3. c# TCP高性能通信
  4. 关于truthy 和 falsy
  5. 安装sass遇到的坑
  6. PC QQ客服代码
  7. ECSHOP和SHOPEX快递单号查询百世快递插件V8.6专版
  8. 【Nginx一】Nginx服务器搭建
  9. Linux基础(02)、MTPutty安装和使用
  10. discuzX3.2 X3.4网站漏洞修复 SQL注入与请求伪造攻击利用与修复