数据的导入导出

一.Excel的数据导入

A:OCUpload实现文件的上传

一、 js文件复制到项目中javascript

二、 在页面中引入一键上传js文件java

<script type="text/javascript" src="../js/ocupload/jquery.ocupload-1.1.2.js"></script>jquery

必须引入jQueryajax

3、在页面中提供任意一个元素apache

<input id="mybutton" type="button" value="upload">浏览器

4、调用一键上传插件提供的upload方法,做用是动态修改页面HTML代码maven

$(function(){
        $("#mybutton").upload({
            name:'myFile',
            action:'xx.action'
        });
    });

action指定访问的后台action的位置.服务端解析上传的文件.post

B: Apache POI解析Excel文件

1.poi的maven坐标引入this

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>${poi.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>${poi.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml-schemas</artifactId>
            <version>${poi.version}</version>
        </dependency>

 

2.页面方法调用(例)spa

 

                $("#button-import").upload({
                    name:"areaFile",
                    action:"../../areaAction_importXls.action"
                });

 

 

 3.后台处理

    private File areaFile;
    
    public void setAreaFile(File areaFile) {
        this.areaFile = areaFile;
    }
    
    @Autowired
    private AreaService service;

    @Action(value="areaAction_importXls")
    public String importXls() throws Exception {
        //经过输入流加载excle文件
        HSSFWorkbook workbook= new HSSFWorkbook(new FileInputStream(areaFile));
        //得到第一个sheet表单
        HSSFSheet sheetAt = workbook.getSheetAt(0);
        //定义一个集合,遍历全部行,得到数据后经过构造方法生成area对象,在把area对象添加到集合中
        List<Area> list = new ArrayList<>();
        for (Row row : sheetAt) {
            if(row.getRowNum() == 0){
                continue;
            }
            String id = row.getCell(0).getStringCellValue();
            String provice = row.getCell(1).getStringCellValue();
            String city = row.getCell(2).getStringCellValue();
            String district = row.getCell(3).getStringCellValue();
            String postcode = row.getCell(4).getStringCellValue();
            Area area = new Area(id,provice,city,district,postcode);
            list.add(area);
        }
        //调用service的保存方法
        service.save(list);
        return NONE;
    }

 

 

 二.Excel文件的导出(例)

1.修改页面导出按钮,绑定方法

            function doExport(){
                //发送ajax请求,经过action查询全部分区,经过poi导出到Excel中,经过流进行下载
                window.location.href="../../subAreaAction_exportXls.action";
            }

2、经过POI将查询到的分区数据写到Excel文件中,经过输出流将文件写回客户端进行文件下载

@Action(value="subareaAction_exportXls")
    public String exportXls() throws IOException{
        //一、查询全部分区数据
        List<SubArea> list = service.findAll();
        //二、基于POI在内存中建立一个Excel文件
        HSSFWorkbook excel = new HSSFWorkbook();
        //三、在Excel文件中建立一个sheet页
        HSSFSheet sheet = excel.createSheet("分区数据统计");
        //四、在标签页中建立行
        HSSFRow title = sheet.createRow(0);
        //五、在行中建立列
        title.createCell(0).setCellValue("编号");
        title.createCell(1).setCellValue("分区起始编号");
        title.createCell(2).setCellValue("分区结束编号");
        title.createCell(3).setCellValue("分区关键字");
        title.createCell(4).setCellValue("辅助关键字");
        title.createCell(5).setCellValue("区域信息");
        for(SubArea subarea : list){
            //每一个分区对象对应一行数据
            HSSFRow data = sheet.createRow(sheet.getLastRowNum() + 1);
            //在行中建立列
            data.createCell(0).setCellValue(subarea.getId());
            data.createCell(1).setCellValue(subarea.getStartNum());
            data.createCell(2).setCellValue(subarea.getEndNum());
            data.createCell(3).setCellValue(subarea.getKeyWords());
            data.createCell(4).setCellValue(subarea.getAssistKeyWords());
            data.createCell(5).setCellValue(subarea.getArea().getName());
        }
        
        //六、经过输出流写回Excel文件到浏览器,文件下载须要一个流(输出流)、两个头(设置头信息)
        ServletOutputStream out = ServletActionContext.getResponse().getOutputStream();
        String filename = "分区数据统计结果.xls";
        String agent = ServletActionContext.getRequest().getHeader("User-Agent");//客户端使用的浏览器类型
        //处理中文文件名
        filename = FileUtils.encodeDownloadFilename(filename, agent);
        String mimeType = ServletActionContext.getServletContext().getMimeType(filename);
        ServletActionContext.getResponse().setContentType(mimeType);
        ServletActionContext.getResponse().setHeader("content-disposition", "attachment;filename=" + filename);
        excel.write(out);
        return NONE;
    }
相关文章
相关标签/搜索