POI导入Excel、导出Excel的简单例子
2016-04-07 10:27
465 查看
导入
是写在Spring MVC里面的一个简单的例子/** * 导入数据 */ @RequestMapping("data_import") public String data_import(HttpServletRequest request){ // 解析器解析request的上下文 CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext()); // 先判断request中是否包涵multipart类型的数据, if (multipartResolver.isMultipart(request)) { // 再将request中的数据转化成multipart类型的数据 MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request; Iterator<String> iter = multiRequest.getFileNames(); while (iter.hasNext()) { MultipartFile file = multiRequest.getFile(iter.next()); if (null != file && file.getSize() > 0 ) { String fileName = file.getOriginalFilename(); //导入地址,自己定义 String path = request.getSession().getServletContext().getRealPath("/")+"assets"+File.separator+getDate()+"_"+fileName; File localFile = new File(path); if(localFile.exists()){ localFile.delete(); } try { file.transferTo(localFile); //如果需要解析的话看这个方法(转化成map插入数据库) //String[] columnName = {"name","phone","address"}; //getMap(path,columnName); } catch (Exception e) { e.printStackTrace(); }finally{ if(localFile.exists()){ localFile.delete(); } } } } } return "URL地址"; } /** * 从文件中获取需要的map path地址 columnName列名 * 这里只是简单的对一行的数据 */ public Map<String,Object> getMap(String path,String[] columnName) throws Exception{ Map<String,Object> maps = new HashMap<String,Object>(); File excel_file = new File(path);// 读取的文件路径 FileInputStream input = new FileInputStream(excel_file); // 读取的文件路径 Workbook wb = null; if(path.endsWith(".xls")){ // 读取excel2003 wb = new HSSFWorkbook(new BufferedInputStream(input)); }else if(path.endsWith(".xlsx")){ // 读取excel2007 wb = new XSSFWorkbook(new BufferedInputStream(input)); } if(wb!=null){ Row r = wb.getSheetAt(0).getRow(1); //获取行 if(null != r){ for(int i=0;i<columnName.length;i++){ maps.put(columnName[i],changeCell(r.getCell(i))); } } } //注意关闭流 input.close(); return maps; } /** * poi读取类型转化,防止数字变成科学计数法 */ public String changeCell(Cell cell) { String returnValue = ""; if (null != cell) { switch (cell.getCellType()) { case Cell.CELL_TYPE_NUMERIC: // 数字 DecimalFormat df = new DecimalFormat("0"); returnValue = df.format(cell.getNumericCellValue()); break; case Cell.CELL_TYPE_STRING: // 字符串 returnValue = cell.getStringCellValue(); break; case Cell.CELL_TYPE_BOOLEAN: // 布尔 Boolean booleanValue = cell.getBooleanCellValue(); returnValue = booleanValue.toString(); break; case Cell.CELL_TYPE_BLANK: // 空值 returnValue = ""; break; case Cell.CELL_TYPE_FORMULA: // 公式 returnValue = cell.getCellFormula(); break; case Cell.CELL_TYPE_ERROR: // 故障 returnValue = ""; break; default: System.out.println("未知类型"); break; } } return returnValue; }
导出
/** * 导出数据 (这里也是只导出一条记录) 页面不能发送ajax请求 */ @RequestMapping("data_export") public ResponseEntity<byte[]> data_export(HttpServletRequest request,HttpServletResponse response,String name,String phone,String address){ //工程地址,自己定义 String path = request.getSession().getServletContext().getRealPath("/")+"assets"+File.separator+getDate()+"_导出数据.xls"; File file = new File(path); try{ //工作簿 HSSFWorkbook wb = new HSSFWorkbook(); //创建一张表 Sheet sheet = wb.createSheet(); sheet.setDefaultColumnWidth(25); //取得第一行 Row row = sheet.createRow(0); row.createCell(0).setCellValue("姓名"); row.createCell(1).setCellValue("电话"); row.createCell(2).setCellValue("地址"); //取得第二行 row = sheet.createRow(1); row.createCell(0).setCellValue(name); row.createCell(1).setCellValue(phone); row.createCell(2).setCellValue(address); if(file.exists()){ file.delete(); } //输出 FileOutputStream fileoutputstream = new FileOutputStream(file); wb.write(fileoutputstream); fileoutputstream.close(); //这边开始下载文件 HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); headers.setContentDispositionFormData("attachment", new String(file .getName().toString().getBytes("utf-8"), "ISO8859-1")); return new ResponseEntity<byte[]>( FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED); }catch (Exception e) { return null; }finally{ if(file.exists()){ file.delete(); } } } /** * 获取需要的日期格式 */ public String getDate(){ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); return sdf.format(new Date()); }
poi 3.14Jar包下载 http://download.csdn.net/detail/liutang9/9483519
相关文章推荐
- HDU 1885 Key Task(BFS)
- Linux文件处理命令
- eclipse maven 插件 安装 和 配置
- linux 串口触摸屏调试记录
- 平台和web简单demo,基于java,html,js,jquery
- windows批处理详解
- javascript Array学习与使用
- GNUI30天从入门到吐血
- 原文地址: http://yzxqml.iteye.com/blog/1761540
- android DownloadManager 的学习之路
- service XXX does not support chkconfig
- HTML <input> 标签的 disabled 属性
- 3月第4周网络安全报告:境内76.2万个主机感染病毒
- 41、PL/SQL连接Oracle 11g配置使用成功(64位Oracle使用PL/SQL)
- 设计模式之装饰模式
- CSS选择器中first-child和first-of-type的区别
- IOS系统图片选择器
- 4.1.2.2 MASTER_PROC结构体
- Centos ftp服务器安装配置
- 剑指offer 面试题题目汇总