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