【保姆级】DO转excel->手把手带你迅速完成字段整理

这是一篇介绍如何通过将代码内容转成excel表格的文章,为啥要转excel呢?虽然用 swagger 可以自动生成 API 文档,但是会有一些公司需要按照指定的格式整理接口文档进行归档(emmmm不要问我为什么知道有。。)这些指定的格式一般都是基于word或者excel的,而诸如字段名、字段类型、字段含义基本都是采取表格的形式,今天的文章就手把手带实现DO对象转excel表格~

二话不说,先上代码(仅需要实现功能的同学可以直接拿去用~想要了解具体实现逻辑思路的可以继续往下看^^)

完整代码

java 复制代码
public class Main {


    public static void main(String[] args) {
        String txtFilePath = "txt文件绝对路径";

        // 读取文本文件中的内容
        String content = null;
        try {
            content = new String(Files.readAllBytes(Paths.get(txtFilePath)));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        String[] splits = content.split("#");
        for (int i = 1; i < splits.length; i++) {
            System.out.println(splits[i]);
            String[] split = splits[i].split("@TableField");
            String cn = split[0].replace("*/","").trim();
            System.out.println("cn: " + cn);
            String[] split2 = split[1].split("\s+");
            String type = split2[2];
            System.out.println("type: " + type);
            String en = split2[3].substring(0, split2[3].length() - 2);
            System.out.println("en: " + en);

            System.out.println("--------------------");
        }

       
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Data");
        
        Row titleRow = sheet.createRow(0);
        titleRow.createCell(0).setCellValue("EN");
        titleRow.createCell(1).setCellValue("Type");
        titleRow.createCell(2).setCellValue("CN");

        for (int rowNum = 1; rowNum < splits.length; rowNum++) {
            String[] split = splits[rowNum].split("@TableField");
            String cn = split[0].replace("*/","").trim();
            System.out.println("cn: " + cn);
            String[] split2 = split[1].split("\s+");
            String type = split2[2];
            System.out.println("type: " + type);
            String en = split2[3].substring(0, split2[3].length() - 2);
            System.out.println("en: " + en);

           
            Row dataRow = sheet.createRow(rowNum);
            dataRow.createCell(0).setCellValue(en);
            dataRow.createCell(1).setCellValue(type);
            dataRow.createCell(2).setCellValue(cn);
        }

     
        try (FileOutputStream outputStream = new FileOutputStream("output.xlsx")) {
            workbook.write(outputStream);
            workbook.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

我们捋下上述代码 的基本流程:先创建一个新的 Excel 工作簿,然后创建一个工作表(sheet),写入标题,然后通过for循环开始写入数据,行号从 1 开始,因为第一行是标题,每完成一行,创建一个新的行,将数据写入同一行的指定列,最后for循环结束,将工作簿写入到文件中。

具体使用流程

安装插件

打开编辑中的设置选项

找到插件(Plugins),搜索 MyBatisX 安装即可

使用插件生成DO对象

找到 Database

点击 Database 中的"+",选择数据源中的 MySQL(如何找到 Database )

配置数据库信息

右键单击你要创建的表选择 "MybatisX-Generator"

填充创建信息

选好属性,点击完成即可

这样生成的DO对象一般长这样

值得注意的是这里生成的字段上都有个@TableField的注解,这个注解是用于指定普通字段与数据库表字段的映射关系的,其他相关的还有@TableName@TableId,其中@TableName 用于指定实体类对应的数据库表名,而@TableId 则用于标识主键字段及其生成策略(诸如自增ID等)。

ps:如果不一样文章开头的代码就不能直接拿去用,需要做兼容处理(不过基本都是长这个样子,想用其他方式的可以参考我之前的那篇【保姆级】手把手带你用MyBatis Plus制作代码生成juejin.cn/post/736719...

导入至 txt 中处理

将所有字段复制到一个txt文本中,将"* "替换成"#"(注意"*"后面有一个空格),替换后的效果如下图:

执行代码

将代码中的文件路径改为你这个,然后执行即可,执行后的效果:

然后直接拷贝进模板即可,当然你也可以按照自身的需求做各种兼容和调整~~

这是一个比较直接并且有些笨的实现,也希望有更好实现方式的朋友可以多交流下~不胜感激~~~

相关推荐
明月_清风1 小时前
加密解密系统完全指南:原理剖析与 Go 实践
后端
小江的记录本2 小时前
【JVM虚拟机】垃圾回收GC:垃圾收集器:CMS:核心原理、回收流程、优缺点、废弃原因(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·spring·面试·maven
冬奇Lab3 小时前
每日一个开源项目(第105篇):Twenty - 跳出 Salesforce 的圈套,定义现代开源 CRM
前端·后端·开源
ServBay4 小时前
月之暗面 Kimi Code 0.4.0 发布,终端 AI 编码助手全面采用 TypeScript,实现毫秒级启动
后端·aigc·ai编程
小江的记录本4 小时前
【JVM虚拟机】垃圾回收GC:垃圾回收算法:标记-清除、标记-复制、标记-整理、分代收集(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·算法·安全·面试
小江的记录本4 小时前
【JVM虚拟机】垃圾回收GC:垃圾收集器:G1:Region分区、Mixed GC、回收流程、适用场景(高频)(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·spring·spring cloud·面试
欧雷殿5 小时前
从「吸引子引导工程」看我的「一人公司」实践
前端·人工智能·后端
卷无止境6 小时前
用一个电影院售票厅,把 SimPy 的条件事件讲透
后端
日月云棠6 小时前
9 Double 与 Float —— IEEE 754 浮点数在 Java 中的实现
java·后端