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

执行代码

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

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

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

相关推荐
+VX:Fegn08953 分钟前
计算机毕业设计|基于java+ vue共享单车信息系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
苏渡苇8 分钟前
Spring Insight 里如何把 Span 画成瀑布时间线
后端·spring·spring cloud·springboot·监控·apm
Charlie_Byte39 分钟前
Spring AI 2 手把手:把 filesystem MCP Server 跑通(SSE / stdio + 真调工具)
后端
程序猿DD1 小时前
OctaFuse Gateway 2.11.0:流式请求优化、用户折扣策略与错误契约升级
前端·后端
Bs_MoneyMagnet1 小时前
基于springboot+vue的非遗物质文化遗产系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring·毕业设计·计算机毕业设计
打工仔折腾 AI1 小时前
Prometheus 告警推钉钉:从单群 Webhook 到跨网络 Alertmanager 实战
人工智能·后端·python·性能优化
console.log('npc')1 小时前
06 — Model 层:数据模型与操作
前端·后端·node.js·express
aramae2 小时前
模拟实现memset()(C语言)
c语言·开发语言·后端
2501_933923252 小时前
Spring Bean作用域揭秘:单例、原型、请求与会话的区别
java·后端·spring·java-ee
高级程序源3 小时前
django招聘网站信息爬取与分析系统79704-计算机课程设计、毕业设计
后端·python·mysql·小程序·django·flask·课程设计