【保姆级】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文本中,将"* "替换成"#"(注意"*"后面有一个空格),替换后的效果如下图:

执行代码

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

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

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

相关推荐
goTsHgo11 分钟前
在 Spring Boot 的 MVC 框架中 路径匹配的实现 详解
spring boot·后端·mvc
waicsdn_haha23 分钟前
Java/JDK下载、安装及环境配置超详细教程【Windows10、macOS和Linux图文详解】
java·运维·服务器·开发语言·windows·后端·jdk
Q_192849990633 分钟前
基于Spring Boot的摄影器材租赁回收系统
java·spring boot·后端
良许Linux37 分钟前
0.96寸OLED显示屏详解
linux·服务器·后端·互联网
求知若饥1 小时前
NestJS 项目实战-权限管理系统开发(六)
后端·node.js·nestjs
左羊1 小时前
【代码备忘录】复杂SQL写法案例(一)
后端
gb42152872 小时前
springboot中Jackson库和jsonpath库的区别和联系。
java·spring boot·后端
程序猿进阶2 小时前
深入解析 Spring WebFlux:原理与应用
java·开发语言·后端·spring·面试·架构·springboot
颜淡慕潇2 小时前
【K8S问题系列 |19 】如何解决 Pod 无法挂载 PVC问题
后端·云原生·容器·kubernetes