jeecgboot / JeecgBoot

🔥「企业级低代码平台」前后端分离架构SpringBoot 2.x/3.x,SpringCloud,Ant Design&Vue3,Mybatis,Shiro,JWT。强大的代码生成器让前后端代码一键生成,无需写任何代码! 引领新的开发模式OnlineCoding->代码生成->手工MERGE,帮助Java项目解决70%重复工作,让开发更关注业务,既能快速提高效率,帮助公司节省成本,同时又不失灵活性。
http://www.jeecg.com
Apache License 2.0
40.09k stars 14.7k forks source link

excel 导出异常 #4917

Closed TomYule closed 1 year ago

TomYule commented 1 year ago
版本号:

3.5.0

前端版本:vue3版?还是 vue2版?
问题描述:

Excel导出异常 建议增加判断条件即可 62行

            if(t!=null && t.getText()!=null && t.getValue()!=null){
截图&代码:
package org.jeecg.config;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;

import org.jeecg.common.api.CommonAPI;
import org.jeecg.common.system.vo.DictModel;
import org.jeecg.common.util.oConvertUtils;
import org.jeecgframework.dict.service.AutoPoiDictServiceI;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;

import lombok.extern.slf4j.Slf4j;

/**
 * 描述:AutoPoi Excel注解支持字典参数设置
 *  举例: @Excel(name = "性别", width = 15, dicCode = "sex")
 * 1、导出的时候会根据字典配置,把值1,2翻译成:男、女;
 * 2、导入的时候,会把男、女翻译成1,2存进数据库;
 * 
 * @Author:scott 
 * @since:2019-04-09 
 * @Version:1.0
 */
@Slf4j
@Service
public class AutoPoiDictConfig implements AutoPoiDictServiceI {
    final static String EXCEL_SPLIT_TAG = "_";
    final static String TEMP_EXCEL_SPLIT_TAG = "---";

    @Lazy
    @Resource
    private CommonAPI commonApi;

    /**
     * 通过字典查询easypoi,所需字典文本
     * 
     * @Author:scott 
     * @since:2019-04-09
     * @return
     */
    @Override
    public String[] queryDict(String dicTable, String dicCode, String dicText) {
        List<String> dictReplaces = new ArrayList<String>();
        List<DictModel> dictList = null;
        // step.1 如果没有字典表则使用系统字典表
        if (oConvertUtils.isEmpty(dicTable)) {
            dictList = commonApi.queryDictItemsByCode(dicCode);
        } else {
            try {
                dicText = oConvertUtils.getString(dicText, dicCode);
                dictList = commonApi.queryTableDictItemsByCode(dicTable, dicText, dicCode);
            } catch (Exception e) {
                log.error(e.getMessage(),e);
            }
        }

        for (DictModel t : dictList) {
            if(t!=null && t.getText()!=null && t.getValue()!=null){
                //update-begin---author:scott   Date:20211220  for:[issues/I4MBB3]@Excel dicText字段的值有下划线时,导入功能不能正确解析---
                if(t.getValue().contains(EXCEL_SPLIT_TAG)){
                    String val = t.getValue().replace(EXCEL_SPLIT_TAG,TEMP_EXCEL_SPLIT_TAG);
                    dictReplaces.add(t.getText() + EXCEL_SPLIT_TAG + val);
                }else{
                    dictReplaces.add(t.getText() + EXCEL_SPLIT_TAG + t.getValue());
                }
                //update-end---author:20211220     Date:20211220  for:[issues/I4MBB3]@Excel dicText字段的值有下划线时,导入功能不能正确解析---
            }
        }
        if (dictReplaces != null && dictReplaces.size() != 0) {
            log.info("---AutoPoi--Get_DB_Dict------"+ dictReplaces.toString());
            return dictReplaces.toArray(new String[dictReplaces.size()]);
        }
        return null;
    }
}

友情提示(为了提高issue处理效率):

zhangdaiscott commented 1 year ago

sq

lsqGitHub716 commented 1 year ago

已修改,下版本发布