导入导出扩展

对单据上的Excel导出、导入进行后端代码扩展

注:扩展代码写在脚手架自带模块里的,升级脚手架时需要迁移

一、导出扩展

1.页面导出入口

图

2.代码导出入口

该类MddBillController的export方法为“Excel导出”、“导出明细”的入口

com.yonyou.ucf.mdf.app.controller.MddBillController#export

图

3.扩展示例

导出扩展, 比如:两个字段进行计算后赋值给另一个字段

图

具体代码:

    /**
     * 导出扩展, 比如:两个字段(num1、num2)进行计算后赋值给另一个字段(num3)
     * @param exportData
     */
    private void deassign(ExcelExportData exportData) {
        LinkedHashMap<String, List<Object>> dataMap = exportData.getDataMap();
        // dataMap:导出数据 key:String 表示每个Sheet的名称 value:List<?> 表示每个Sheet里的所有数据行
        for(Map.Entry<String, List<Object>> entry : dataMap.entrySet()) {
            String key = entry.getKey();
            if("测试导入导出扩展".equals(key)){ // 指定实体扩展(Sheet)
                //遍历导出数据的条数
                List<Object> datas = entry.getValue();
                for (Object data : datas) {
                    // 示例: 两个字段进行计算后赋值给另一个字段
                    JSONObject json = (JSONObject) JSONObject.toJSON(data);
                    Integer num1 = json.getJSONObject("num1").getInteger("value");
                    Integer num2 = json.getJSONObject("num2").getInteger("value");
                    // 计算新值
                    Integer num3 = num1 + num2;
                    // 设置新值
                    Map<String,Object> valueMap = (Map<String, Object>) data;
                    Object value1 = valueMap.get("num3");
                    CellData cellData = null;
                    if(value1 instanceof CellData){
                        cellData=(CellData) value1;
                    }else{
                        cellData=new CellData(value1);
                    }
                    cellData.setValue(num3);
                }
            }

        }
    }

4.导出效果

扩展前的导出:
图
扩展后的导出:
图

二、导入扩展

1.页面导入入口

图

2.代码导入入口

com.yonyou.ucf.mdf.app.controller.BillController#billImport

图

3.扩展示例

图

具体代码:

    /**
     * 导入扩展 , 扩展示例:把一个字段值拆分成另外两个字段值
     * @param datas
     */
    private void importSplit(Map<String, Object> datas) {
        // 导入扩展
        List<HashMap<String, Object>> zs_import_export = (List<HashMap<String, Object>>) datas.get("zs_import_export");//根据元数据 编码获取导入Excel中数据
        // 遍历每条数据
        for (HashMap<String, Object> data : zs_import_export){
            Integer num3 = Integer.parseInt(data.get("num3").toString());
            // 扩展示例:把一个字段值拆分成另外两个字段值
            Integer num1 = num3 / 2;
            data.put("num1",num1);
            data.put("num2",num3 - num1);
        }
    }

4.导入效果

导入扩展前:
图
导入扩展后:
图

Copyright © 用友 -【生态技术部】 2022-2023 all right reserved,powered by Gitbook修订时间: 2021-12-20 15:07:46

results matching ""

    No results matching ""