导入导出excel

导入导出excel

导入导出需要的jar包
<dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi</artifactId>
      <version>3.16</version>
    </dependency>
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-ooxml-schemas</artifactId>
      <version>3.16</version>
    </dependency>
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-excelant</artifactId>
      <version>3.16</version>
    </dependency>
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-examples</artifactId>
      <version>3.16</version>
    </dependency>
导出:

  @RequestMapping("getCusByIds")
    @ResponseBody
    public Map<String ,Object> getCusByIds(String [] arr, HttpServletResponse response)throws  Exception{
        String fileName = "test.xls";
        response.setHeader("Content-disposition", "attachment;filename="
                + new String(fileName.getBytes("gb2312"), "ISO8859-1"));//设置文件头编码格式
        response.setContentType("APPLICATION/OCTET-STREAM;charset=UTF-8");//设置类型
        response.setHeader("Cache-Control", "no-cache");//设置头
        response.setDateHeader("Expires", 0);//设置日期头

        Map<String,Object> map=new HashMap<>();
            SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyy-MM-dd");
     List<Customer> list=  customerService.getCusByIds(arr);

        Workbook workbook =new HSSFWorkbook();
        try {
        Sheet sheet1 = workbook.createSheet("sheetone");
        Row row = sheet1.createRow(0);
        Cell[] cell =new HSSFCell[5];
        for (int i = 0; i < cell.length; i++) {
            cell[i]=row.createCell(i);
        }
        cell[0].setCellValue("序号");
        cell[1].setCellValue("联系人");
        cell[2].setCellValue("公司名称");
        cell[3].setCellValue("添加时间");
        cell[4].setCellValue("联系电话");
        for (int i = 0; i < list.size(); i++) {
            Row row1 = sheet1.createRow(i + 1);
            Cell[] cell2 =new HSSFCell[5];
            for (int j = 0; j < cell2.length; j++) {
                cell2[j]=row1.createCell(j);
            }
            cell2[0].setCellValue(i+1);
            cell2[1].setCellValue(list.get(i).getCompanyperson());
            cell2[2].setCellValue(list.get(i).getComname());
            Date addtime = list.get(i).getAddtime();

            String format = simpleDateFormat.format(addtime);
            cell2[3].setCellValue(format);
            cell2[4].setCellValue(list.get(i).getComphone());
        }

            workbook.write(response.getOutputStream());
            map.put("code",200);

        } catch (IOException e) {
            e.printStackTrace();
            map.put("code",500);
        }finally {
            try {
                response.getOutputStream().flush();
                response.getOutputStream().close();
                workbook.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return map;
    }
前端
 function dao() {
            var arr=new Array();
//选择所有数据的id遍历进数组中
           $("[name='id']").each(function () {
               var id=$(this).val();
               arr.push(id);
           });
            $.ajax({
                type:"get",
                traditional: true,
                data:{arr:arr},
                dataType:"json",
                url:"${pageContext.request.contextPath}/customer/getCusByIds",
                success:function (msg) {
                    if(msg.code==200){
                        alert("导出成功");
                    }else{
                        alert("导出失败");

                    }
                }
            })

        }
导入:
首先需要讲上传下载的mvc.xml层配置生效,
springmvc.xml配置内容如下
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
//上传文件使用的编码
        <property name="defaultEncoding" value="UTF-8"/>
//上传文件的大小最大值
        <property name="maxUploadSize" value="#{1024*1024*500}"/>
    </bean>
//加上这个注解可以访问静态资源此注解必须搭配mvc注解驱动
    <mvc:default-servlet-handler/>
id名必须为此值,
其他一切参照文件上传
后端接口:
@RequestMapping(value = "/import",method = RequestMethod.POST)
    @ResponseBody
    public Map<String,Object> importExcel(MultipartFile file) throws Exception{
        Workbook wb = WorkbookFactory.create(file.getInputStream());
//这个日期格式必须与前台传过来的日期格式一致,前台如果是yyyy年MM月dd日则下面的表达式也要如此
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        List<Customer> customers = new ArrayList<Customer>();
        for(int i = 0 ;i <wb.getNumberOfSheets();i++){
            Sheet sheetAt = wb.getSheetAt(i);
            if(sheetAt != null){
                for( int j = sheetAt.getFirstRowNum()+1; j<=sheetAt.getLastRowNum() ;j++){
                    Row row = sheetAt.getRow(j);
                    Customer customer = new Customer();
                    int id = (int)row.getCell(0).getNumericCellValue();
                    customer.setId(id);
                    String stringCellValue = row.getCell(1).getStringCellValue();
                    customer.setCompanyperson(stringCellValue);
                    String companyName = row.getCell(2).getStringCellValue();
                    customer.setComname(companyName);
                    String date = row.getCell(3).getStringCellValue();
                    customer.setAddtime( sdf.parse(date));
                    customers.add(customer);

                }
            }
//打印发现没有问题,此处是实验
//正确的使用方式是此处调用业务层然后继续调用dao层把这个集合数据写入数据库中

            System.out.println(customers);
        }

        System.out.println("导入方法执行了........");
        Map<String,Object> map = new HashMap<String,Object>();
        map.put("statusCode",200);
        map.put("message","导入成功");
        return map;
    }
前端:
function importExcel() {
            var formData = new FormData();
            var interval = setInterval(function () {
                var file = $("#file")[0].files[0];
                if(file != undefined){
                    formData.append("file",file);
                    //取消定时器
                    clearInterval(interval);
                    $.ajax({
                        type:"POST",
                        url:"${pageContext.request.contextPath}/cust/import",
                        data:formData,
                        processData: false,
                        contentType:false,
                        cache:false,
                        success:function (msg) {
                            if(msg.statusCode == 200){
                                alert(msg.message);
                            }
                        }
                    });
                }
            },1000);

        }
<style>
        #uploadImg{
            font-size:16px;
            overflow:hidden;
            position:absolute
        }
        #file{
            position:absolute;
            z-index:100;
            margin-left:-180px;
            font-size:60px;
            opacity:0;
            filter:alpha(opacity=0); margin-top:-5px;
        }
    </style>
<span id="uploadImg">
       <input type="file" id="file" size="1"onclick="importExcel()" >
       <a href="javascript:void(0)" >上传Excel</a>
    </span>
posted @ 2019-12-11 15:32  呆code  阅读(175)  评论(0编辑  收藏  举报