excel读取数据偷懒相关(根据表字段中英文,批量输出实体类里的字段及注解)

2023-09-01 10:52:00
1147533288
原创
225

背景:

标准562.xls第一个sheet页中,第二行开始为数据,第二列和第4列分别是中文,大写英文字段。


偷懒输出类似格式


/** 证件类型 */
@JSONField(name = "CARD_TYPE")
private String cardType;



代码记录


<dependency>
            <groupId>com.aspose</groupId>
            <artifactId>aspose-cell</artifactId>
            <version>21.1</version>
            <classifier>jdk17</classifier>
            <scope>system</scope>
            <systemPath>D:/.m2/repository/com/aspose/aspose-cell/21.1/aspose-cell-21.1-jdk17.jar</systemPath>
</dependency>



另一处代码忽略吧,是为了批量读取值域码表写数据库用的。

package com.neusoft.mrqe.utils;

import com.aspose.cells.Workbook;
import com.aspose.cells.Worksheet;
import com.google.common.collect.Lists;
import com.neusoft.mrqe.mybatis.entity.CodomainDetail;
import org.apache.commons.lang.WordUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class AsposeUtil {
    private static final Logger logger = LoggerFactory.getLogger(AsposeUtil.class);
    public static final String file = "D:\\IdeaProjects\\dr2023\\mrqe\\doc\\疾病分类与代码国家临床版2.0(2022年修订版).xlsx";
    public static final String file_standard = "C:\\Users\\meepo\\Desktop\\标准562.xlsx";
    public static void main(String[] args) throws Exception {
//        List<CodomainDetail> r = impAnswerXls(file,new HashMap<>());
//        System.out.println(r);
        printByTable(file_standard);
    }

    private static void printByTable(String file_standard) throws Exception{
        //        // 加载 Excel 文件
        Workbook workbook = new Workbook(file_standard);
        // 获取第一个工作表
        Worksheet worksheet = workbook.getWorksheets().get(0);
        // 读取指定区域的数据
        com.aspose.cells.Range range = worksheet.getCells().createRange("A:D");
        Object[][] values = (Object[][]) range.getEntireColumn().getValue();//多行,每行2个值
        for(int row=1;row<35867;row++){
            if(values[row][3]==null){
                System.out.println("row="+row);
                break;
            }
            System.out.println("/** " + values[row][1] + " */");
            System.out.println("@JSONField(name = \"" + values[row][3] + "\")");
            System.out.println("private String " + toCamelCase(String.valueOf(values[row][3])) + ";");
            System.out.println();
        }

    }

    public static String toCamelCase(String s) {
        String[] words = s.split("_");
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < words.length; i++) {
            String word = words[i];
            if (i == 0) {
                sb.append(word.toLowerCase());
            } else {
                String firstLetter = word.substring(0, 1);
                String restLetters = word.substring(1);
                sb.append(firstLetter.toUpperCase()).append(restLetters.toLowerCase());
            }
        }
        return sb.toString();
    }


    /**
     *
     */
    public static List<CodomainDetail> impAnswerXls(String file,Map<String,String> answerMap) throws Exception {
//        // 加载 Excel 文件
//        Workbook workbook = new Workbook(file);
//        // 获取第一个工作表
//        Worksheet worksheet = workbook.getWorksheets().get(0);
//        // 读取指定区域的数据
//        com.aspose.cells.Range range = worksheet.getCells().createRange("A:B");
//        Object[][] values = (Object[][]) range.getEntireColumn().getValue();//多行,每行2个值
//        Map<String,Map<String,Integer>> ret = new HashMap<>();
//        String k = null;
//        String v = null;
//        CodomainDetail d = null;
        List<CodomainDetail> list = Lists.newArrayList();
//        for(int row=1;row<35867;row++){
//            k = String.valueOf(values[row][0]);
//            v = String.valueOf(values[row][1]);
//            d = new CodomainDetail();
//            d.setIsDel("0");
//            d.setDetailId(UUIDUtils.getUUID());
//            d.setSn(String.format("%05d", row));
//            d.setCodomainId("JBFLYDM");
//            d.setValue(k);
//            d.setMean(v);
//            d.setCreateBy("meepo");
//            d.setCreateDate("202307100000");
//            list.add(d);
//        }
        return list;
    }
}


另附一个单元测试调用

import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.common.collect.Lists;
import com.neusoft.mrqe.Application;
import com.neusoft.mrqe.datasource.DbContextHolder;
import com.neusoft.mrqe.mybatis.entity.MrqeDqScore;
import com.neusoft.mrqe.mybatis.service.CodomainDetailService;
import com.neusoft.mrqe.mybatis.service.MrqeDqScoreService;
import com.neusoft.mrqe.utils.AsposeUtil;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.HashMap;
import java.util.List;

/**
 * @author meepo
 * @date: 2023-07-10 17:01
 * @Description:
 */
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class DBTest {

    @Autowired
    private CodomainDetailService codomainDetailService;

    @Autowired
    private MrqeDqScoreService dqScoreService;

//    @Test
    public void testGetUserById() {
        List list = null;
        try {
            list = AsposeUtil.impAnswerXls(AsposeUtil.file,new HashMap<>());
        } catch (Exception e) {
            e.printStackTrace();
        }
//        codomainDetailService.saveBatch(list,5000);
        System.out.println("导入完毕");
    }

    @Test
    public void testData(){
        LambdaQueryWrapper<MrqeDqScore> queryWrapper = Wrappers.lambdaQuery();
        queryWrapper.eq(MrqeDqScore::getPlanId,"764be528174f445a83184a6ccfad6192");
        queryWrapper.last("limit 1");
        DynamicDataSourceContextHolder.push("tag_db");
        MrqeDqScore o = dqScoreService.getOne(queryWrapper,true);
        List<MrqeDqScore> list = Lists.newArrayList();
        MrqeDqScore newObj = null;
        for(int i=0;i<900000;i++){
            newObj = new MrqeDqScore();
            BeanUtils.copyProperties(o, newObj);
            newObj.setUpdateBy(String.valueOf(i+100001));
            list.add(newObj);
        }

        dqScoreService.saveBatch(list,5000);
        DynamicDataSourceContextHolder.poll();
        System.out.println("导入完毕");
    }

}

文章分类
联系我
联系人: meepo
电话: *****
Email: 1147533288@qq.com
QQ: 1147533288