这是一篇介绍如何通过将代码内容转成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文本中,将"* "替换成"#"(注意"*"后面有一个空格),替换后的效果如下图:
执行代码
将代码中的文件路径改为你这个,然后执行即可,执行后的效果:
然后直接拷贝进模板即可,当然你也可以按照自身的需求做各种兼容和调整~~
这是一个比较直接并且有些笨的实现,也希望有更好实现方式的朋友可以多交流下~不胜感激~~~