zoukankan      html  css  js  c++  java
  • 导入导出excel

    上传文件到阿里云oss。

    1,查看oss“上传文件”java参考文档

    2,传入模板方法要求的参数,MultipartFile接口里存储对应上传文件,相当于上传文件的对象。

    3,把需要的参数存入log表里(url之类)

    下载文件从oss到服务器。

    方法1,使用apach common包下的,FileUtils.copyURLToFile(URL,File)方法,可以根据url下载。

    方法2,查看阿里云oss的“下载文件”java参考文档。

    下载文件从服务器到客户端

    用HttpServletResponse,流的方式调用浏览器下载。

    导入excel

     hutool官网查看,主要是把excel转为pojo类

    1,得到输入流,ExcelReader reader = ExcelUtil.getReader(ResourceUtil.getStream("aaa.xlsx"));

    2,得到内容,List<T> all = reader.read()。官网还有其他方法,不推荐这个方法,因为不能去空格。

    3,转为pojo类

    第一行是头部信息,从第二行到第2147483647行。

    导出excel

    poi工具包把pojo转为excel。输出到服务器。

     hutool工具包,给poi做了封装,输出到服务器后,用流的方式从服务器下载到客户端。

        /**
         * 离职导入
         */
        @Override
        public BaseResult proImportWithdrawn(Long fileId, Long userId){
            UploadLogDto byId = uploadLogFeignApi.getById(fileId);
            //去oss上拉取文件到本地
            String s = DownloadURLFile.downloadFromUrl(byId.getFileUrl(), "/tmp/");
            String fileName = DownloadURLFile.getFileNameFromUrl(byId.getFileUrl());
            if (s.equals("Successful!")) {
                //解析文件
                FileInputStream fis = null;
                List<BusiImportWithdrawnVo> pojoList = null;
                try {
                    fis= new FileInputStream("/tmp/" + fileName);
                    LinkedHashMap<String, String> alias = new LinkedHashMap<>();
                    alias.put("姓名", "name");
                    alias.put("身份证", "idCardValue");
                    alias.put("手机号", "mobile");
                    alias.put("企业名称", "corpName");
                    alias.put("落地仓名称", "locationName");
                    alias.put("落地仓编号", "locationCode");
                    alias.put("产品名称", "productName");
                    alias.put("产品编号", "productId");
                    alias.put("银行卡号", "accountNumber");
                    alias.put("开户行", "bankName");
                    alias.put("银行卡类型(1:银行卡,2支付宝)", "accountType");
                    pojoList = ExcelUtil.excel2Pojo(fis, BusiImportWithdrawnVo.class, alias, 0, 1);
                } catch (IOException e) {
                    e.printStackTrace();
                } finally {
                    try {
                        fis.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
       //下面2个是导出
    @Override
    public void exportOrderByRequisition(Long requisitionId, HttpServletResponse response) { if(requisitionId == null){ throw new CommonException(ResultCode.ORDER50027).msgData("申请单ID不能为空"); } RequisitionListVo requisitionListVo = requisitionBaseMapper.getBaseRequisitionById(requisitionId); List<RequisitionOrderExcelVo> orderListVoList = requisitionOrderMapper.getOrderListByRequisitionId(requisitionId); if(requisitionListVo != null){ int listSize = orderListVoList != null ? orderListVoList.size() :0; String headLine = "【" + (StringUtils.isNotEmpty(requisitionListVo.getRequisitionCode()) ? requisitionListVo.getRequisitionCode() : "") +"】请款单明细"; ExcelWriter writer = createHeaderExcel(requisitionListVo,listSize,headLine); try { HuToolExcelUtil.export(response, RequisitionOrderExcelVo.class, orderListVoList,writer); } catch (Exception e) { e.printStackTrace(); } } }
        /**
         * 请款单信息封装excel信息
         * @param requisitionListVo
         * @param listSize
         * @param headLine
         * @return
         */
        private ExcelWriter createHeaderExcel(RequisitionListVo requisitionListVo,int listSize,String headLine){
            ExcelWriter writer = null;
            if(requisitionListVo != null){
                if (listSize > 60000){
                    writer = ExcelUtil.getBigWriter();
                }else {
                    writer = ExcelUtil.getWriter();
                }
                writer.merge(0, 1, 0, 10, headLine, false);
                writer.merge(2, 2, 0, 1, "委托企业", false);
                writer.merge(2, 2, 2, 5, StringUtils.isNotEmpty(requisitionListVo.getCorpName()) ? requisitionListVo.getCorpName() : "", false);
                writer.merge(2, 2, 6, 7, "归属项目", false);
                writer.merge(2, 2, 8, 10, StringUtils.isNotEmpty(requisitionListVo.getProjectName()) ? requisitionListVo.getProjectName() : "", false);
                writer.merge(3, 3, 0, 1, "园区公司", false);
                writer.merge(3, 3, 2, 5, StringUtils.isNotEmpty(requisitionListVo.getParkCorpName()) ? requisitionListVo.getParkCorpName() : "", false);
                writer.merge(3, 3, 6, 7, "出款账号", false);
                writer.merge(3, 3, 8, 10, StringUtils.isNotEmpty(requisitionListVo.getPeyerBankAccount()) ? requisitionListVo.getPeyerBankAccount() : "", false);
                writer.merge(4, 4, 0, 1, "创建时间", false);
                writer.merge(4, 4, 2, 5, requisitionListVo.getCreateTime() != null ? requisitionListVo.getCreateTime() : "", false);
                writer.merge(4, 4, 6, 7, "请款单状态", false);
                writer.merge(4, 4, 8, 10, StringUtils.isNotEmpty(requisitionListVo.getRequisitionStatusName()) ? requisitionListVo.getRequisitionStatusName() : "", false);
                writer.merge(5, 5, 0, 1, "总笔数", false);
                writer.merge(5, 5, 2, 5, requisitionListVo.getPaymentSum() != null ? requisitionListVo.getPaymentSum() : "", false);
                writer.merge(5, 5, 6, 7, "总金额(元)", false);
                writer.merge(5, 5, 8, 10, requisitionListVo.getPaymentAmount() != null ? requisitionListVo.getPaymentAmount() : "", false);
                writer.merge(6, 6, 0, 1, "成功笔数", false);
                writer.merge(6, 6, 2, 5, requisitionListVo.getSuccessSum() != null ? requisitionListVo.getSuccessSum() : "", false);
                writer.merge(6, 6, 6, 7, "实发金额(元)", false);
                writer.merge(6, 6, 8, 10, requisitionListVo.getRealAmount() != null ? requisitionListVo.getRealAmount() : "", false);
                writer.passRows(8);
            }
            return writer;
        }

     导出,

        /**
         * 响应式导出订单
         * @param searchParam
         * @param response
         */
        @Override
        public void exportOrdersNew(String searchParam, HttpServletResponse response) {
            SearchOrdersVo searchOrdersVo = JSONObject.parseObject(searchParam, SearchOrdersVo.class);
            if (searchOrdersVo == null) {
                searchOrdersVo = new SearchOrdersVo();
            }
            List<ExportOrderListVo> list = orderBaseMapper.exportOrdersNew(searchOrdersVo);
            try {
                HuToolExcelUtil.export(response, ExportOrderListVo.class, list);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
  • 相关阅读:
    Python--json处理
    Python--加密模块
    Python--函数即变量
    bzoj 2276: [Poi2011]Temperature
    1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛
    2017 9 15 noip模拟赛
    bzoj 1612: [Usaco2008 Jan]Cow Contest奶牛的比赛
    2017 9 11 noip模拟赛T2
    URAL 1613. For Fans of Statistics (2017 9 6 noip模拟赛T3)
    codeforces 105 B. Dark Assembly(birbe贿赂 noip模拟赛)
  • 原文地址:https://www.cnblogs.com/zhuxiang1029/p/15221641.html
Copyright © 2011-2022 走看看