Excel批量导入导出功能开发

来源:互联网 发布:阿里云短信接口开发 编辑:程序博客网 时间:2024/05/21 10:36

ftl:

<a id="subimport" onclick="subImport()"class="easyui-linkbutton" iconCls="icon-redo"  style="display:inline-block" >导入</a>&nbsp&nbsp                            <a onclick="expCsv()" class="easyui-linkbutton" iconCls="icon-print"  style="display:inline-block" >模板下载</a>

js:

function subImport() {//  probeAuthStatus(function() { // 已登录        var fileName = $("#productFile").val();        if (fileName == null || fileName == "") {            $.messager.alert("操作提示","未选择文件,请选择!",'info');            return;        }        if (fileName != "") {            fileName = fileName.substring(fileName.lastIndexOf("."));        }        if (fileName.toLowerCase() != ".csv") {            $.messager.alert("操作提示","请填入CSV文件的格式!",'info');            return;        }        $("#queryForm").attr("action", base + "/standardSkuCmmdty/importSkuCmmdty.do");        $("#queryForm").submit();//  }, function() {//未登录状态//      login();//  });};

java:

private static final String[] FILE_HEADER = { "SKU商品编码" };    private static final CSVFormat CSV_FORMAT = CSVFormat.EXCEL.withHeader(FILE_HEADER).withQuote(null)            .withSkipHeaderRecord(true);public String importProduct(Model model, @RequestParam("productFile") MultipartFile productFile) {        if (productFile == null) {            model.addAttribute(Constant.ERROR_MSG, "导入文件为空!");            return Constant.COMMON_ERROR_PAGE;        }        try {            Iterable<CSVRecord> records = CSV_FORMAT.parse(new InputStreamReader(productFile.getInputStream(), "GBK"));            if (records != null && records.iterator() != null) {                List<StandardSkuCmmdtylImportErrorVo> errorList = Lists.newArrayList();                int totalSuccessCount = 0;                int i = 2;                for (CSVRecord record : records) {                    int recordNum = record.size();                    if (recordNum == 1) {                        String cmmdtyCode = record.get(0);                        // 获取传进来的商品编码;                        if (!StringUtils.isEmpty(cmmdtyCode)) {                            int result = cmmdtyInfoBusiness.addStandardCmmdty(cmmdtyCode);                            if (result != 1) {                                StandardSkuCmmdtylImportErrorVo errorInfo = new StandardSkuCmmdtylImportErrorVo();                                errorInfo.setCmmdtyCode(cmmdtyCode);                                errorInfo.setErrMsg("line:" + i + " add cmmdty error.");                                errorList.add(errorInfo);                            } else {                                totalSuccessCount = totalSuccessCount + 1;                            }                        }                    } else {                        model.addAttribute("totalSuccessCount", totalSuccessCount);                        model.addAttribute(Constant.ERROR_MSG, "导入模板不对!");                        return "standardSkuCmmdty/importResult.ftl";                    }                    i++;                }                model.addAttribute("totalSuccessCount", totalSuccessCount);                model.addAttribute("errorSize", errorList.size());                model.addAttribute("errorList", errorList);            } else {                model.addAttribute("totalSuccessCount", 0);                model.addAttribute(Constant.ERROR_MSG, "导入文件为空!");                return "standardSkuCmmdty/importResult.ftl";            }        } catch (IOException e) {            LOGGER.error("解析文件报错!IO", e);        }        return "standardSkuCmmdty/importResult.ftl";    }

导出功能:

/** * 导出excel */function expCsv(flag) {        window.location.href = base + "/standardSkuCmmdty/exportCsv.do";} @RequestMapping("/exportCsv.do")    public void exportCsv(HttpServletResponse response, HttpServletRequest request, String orgId, String modelFlag) {        String fileName = "标准SKU商品导入模板.csv";        String userAgent = request.getHeader("User-Agent");        // 处理中文名称的问题        fileName = ExportFileUtil.dealChineseFileName(userAgent, fileName);        PrintWriter writer = null;        // 设置响应        response.setCharacterEncoding("GBK");        response.setContentType("text/csv;charset=GBK");        response.setHeader("Pragma", "public");        response.setHeader("Cache-Control", "max-age=30");        response.setHeader("Content-Disposition", "attachment; filename=" + fileName);        try {            writer = response.getWriter();            CSV_FORMAT.print(writer);            writer.flush();        } catch (IOException e) {            LOGGER.error("生成文件报错!IO", e);        } finally {            IOUtils.closeQuietly(writer);        }    } /**     * 导出文件名中文处理     *      * @param userAgent     * @param fileName     * @return     */    public static String dealChineseFileName(String userAgent, String fileName) {        String fn = fileName;        try {            // 针对IE或者以IE为内核的浏览器:            if (userAgent.contains("MSIE") || userAgent.contains("Trident")) {                fn = URLEncoder.encode(fileName, "UTF-8");            } else {                // 非IE浏览器的处理:                fn = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");            }        } catch (UnsupportedEncodingException e1) {            LOGGER.error("文件名转换出现错误", e1);        }        return fn;    }
原创粉丝点击