Excel批量导入导出功能开发

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;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章