码迷,mamicode.com
首页 > 其他好文 > 详细

Excel导入导出例子

时间:2017-07-23 22:58:29      阅读:435      评论:0      收藏:0      [点我收藏+]

标签:etl   class   post   表达   tac   isp   findall   contex   div   

一键上传

  在ssh中上传批量数据表格

    

1.必须同步提交form表单
2.Form表单编码方式:multipart/form-data
3.提交方式必须为post
4.上传文件对应input type="file"

 

为导入按钮添加一键上传效果:

  

//为导入添加一键上传
                $("#button-import").upload({
                    action : ‘../../area_batchImport.action‘,
                    //在文件选中时,作出校验
                    onSelect : function(){
                        //关闭自动提交
                        this.autoSubmit = false;
                        //获取当前文件
                        var fileName = this.filename();
                        //校验规则的正则表达式(只允许提交xls,xlsx结尾的文件)
                        var regex = /^.*\.(xls|xlsx)$/;
                        if(regex.test(fileName)) {
                            //满足后缀名结尾规则
                            this.submit();
                        }else {
                            $.messager.alert("警告","只能上传xls,xlsx结尾的文件","warning");
                        }
                    },
                    onComplete : function(response){
                        alert("上传成功!");
                    } 
                }); 

 

导入:

 POI:http://poi.apache.org/这是官网

HSSF 解析 Excel 97-2007 格式 (.xls)
XSSF 解析 Excel 2007 格式 (.xlsx )

下面是解析Excel的部分代码

@Action(value="area_batchImport")
    public String batchImport() throws IOException{
        //创建集合
        List<Area> areas = new ArrayList<>();
        HSSFWorkbook workBook = new HSSFWorkbook(new FileInputStream(file));
        //获取sheet对象
        HSSFSheet sheet = workBook.getSheetAt(0);
        //读取sheet中的每一行
        for (Row row : sheet) {
            //跳过第一行
            if(row.getRowNum() == 0) {
                continue;
            }
            //跳过空行和最后行
            if(row.getCell(0) == null || StringUtils.isBlank(row.getCell(0).getStringCellValue())) {
                continue;
            }
            //封装area数据,放入集合中
            Area area = new Area();
            area.setId(row.getCell(0).getStringCellValue());
            area.setProvince(row.getCell(1).getStringCellValue());
            area.setCity(row.getCell(2).getStringCellValue());
            area.setDistrict(row.getCell(3).getStringCellValue());
            area.setPostcode(row.getCell(4).getStringCellValue());
   //放入集合
            areas.add(area);
        }
        areaService.saveBatch(areas);
        return NONE;
    }

使用POI将数据导出

// 获得到所有的分区数据
        List<Subarea> list = subareaService.findAll();

        // 在内存中创建excel文件
        HSSFWorkbook workBook = new HSSFWorkbook();
        // 创建一个标签页
        HSSFSheet sheet = workBook.createSheet("分区数据");
        // 创建标题行
        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("省市区");
        //遍历给数据表格赋值
        for (Subarea subarea : list) {
            HSSFRow dataRow = sheet.createRow(sheet.getLastRowNum()+1);
            dataRow.createCell(0).setCellValue(subarea.getId());
            dataRow.createCell(1).setCellValue(subarea.getStartnum());
            dataRow.createCell(2).setCellValue(subarea.getEndnum());
            dataRow.createCell(3).setCellValue(subarea.getPosition());
            dataRow.createCell(4).setCellValue(subarea.getRegion().getName());
        }
        //使用输出流进行文件下载(一个流,两个头)
        String filename = "分区数据.xls";
        String type = ServletActionContext.getServletContext().getMimeType(filename);
        ServletOutputStream out = ServletActionContext.getResponse().getOutputStream();
        //设置响应头信息
        ServletActionContext.getResponse().setContentType(type);
        
        //获取客户端浏览器类型
        String agent = ServletActionContext.getRequest().getHeader("User-Agent");
        filename = FileUtils.encodeDownloadFilename(filename, agent);
        ServletActionContext.getResponse().setHeader("content-disposition", "attachment;filename="+filename);
        workBook.write(out);

 

Excel导入导出例子

标签:etl   class   post   表达   tac   isp   findall   contex   div   

原文地址:http://www.cnblogs.com/learnjfm/p/7226106.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!