Swagger导出word和excel文档
之前写了篇关于Swagger2的博文 Swagger2生成在线接口文档并导出pdf文件,可以把swagger在线接口文档导出成pdf文件本地查看,当然swagger2本身是支持导出markdown格式的,所以这两种格式没啥问题了。
现在有个需求是这样的:把接口和接口描述放在表格里呈现出来,那么要么是excel的表格,要么是word的表格,两种格式都试一下
一、Excel格式
第三方的项目源码在这里:https://github.com/ghdefe/swagger-json-to-csv,下载下来导入到Idea
核心代码如下:
public class JsonToTxtApplication {public static void main(String[] args) throws IOException {SpringApplication.run(JsonToTxtApplication.class, args);FileInputStream in = new FileInputStream("1.txt");JsonNode jsonNode = new ObjectMapper().readTree(in);/*** 取所有数据并存到HashMap中*/String api;HashMap<String, List<Root>> hm = new HashMap<>();JsonNode node = jsonNode.findValue("paths");Iterator<String> stringIterator = node.fieldNames();while (stringIterator.hasNext()) {//apiJsonNode tags = node.findValue((api = stringIterator.next())); Iterator<String> methodsname = tags.fieldNames();while (methodsname.hasNext()) {//方法String method = methodsname.next(); JsonNode methods = tags.findValue(method);String name = methods.findValue("tags").get(0).asText();String description = methods.findValue("description").asText();//当前查询到的一个接口数据放到hashmap里管理Root root = new Root(name, method, api,description); if (hm.containsKey(root.getName())) {List<Root> roots = hm.get(root.getName());roots.add(root);hm.put(root.getName(), roots);} else {ArrayList<Root> roots = new ArrayList<>();roots.add(root);hm.put(root.getName(), roots);}}}/*** 获得name的顺序,并按顺序写入csv*/File file = new File("result.csv");//excel不能读取utf-8编码的csv文件BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "GBK")); Iterator<JsonNode> names = jsonNode.findValue("tags").iterator();while (names.hasNext()) {String name = names.next().findValue("name").asText();Iterator<Root> iterator1 = hm.get(name).iterator();bufferedWriter.write(name + ",");Boolean isFirst = true;//如果是第一行增加name,如果不是填入空白格while (iterator1.hasNext()) { if (!isFirst) {bufferedWriter.write(",");} else {isFirst = false;}Root next = iterator1.next();bufferedWriter.write(next.getMethod() + "," +next.getApi() + "," + next.getDescription());bufferedWriter.newLine();}}bufferedWriter.close();//打开生成的csv文件Runtime.getRuntime().exec("cmd /c start C:/Export/result.csv");System.out.println("done");}}
此方法输入的是swagger json文件(api-docs),比如说你的swagger在线接口文档地址为
http://localhost:8080/doc.html,同时你的swagger配置文件里设置了groupName(“test”),那么你的swaager json在线地址为
http://localhost:8080/v2/api-docs?group=test,把这个链接下的内容复制下来就是该方法的输入文件,即代码中的1.txt
此方法输出的结果是一个csv文件,表格形式列出接口,如下图
二、Word格式
word格式就比excel要稍微复杂一点了
同样我们使用第三方的轮子,https://github.com/JMCuixy/swagger2word
改一下templates文件夹下的模板文件,来生成我需要的word格式接口文档
使用起来也很方便了,直接使用上一步生成csv的源文件1.txt,当然直接用http://localhost:8080/v2/api-docs?group=test地址也行更方便
点击try it out,执行接口,可能需要一点时间,执行完成后,点击下载
不合适的可以更改模板样式,模板文件在这里
打开word文件查看效果
三、参考博文
1、Swagger文档转Word 文档
2、提取swagger内容到csv表格,excel可打开
Swagger导出word和excel文档相关推荐
- 计算机无法建立word文档,(电脑中右键不能新建word和excel文档怎么办)为何电脑无法新建excle...
电脑中右键不能新建word和excel文档怎么办 开始,找到运行命,输入regedit,打开注册表. 在左侧找到hkey_classes_root目录,并展开. 首先,我们利用ctrl f 快捷键,查 ...
- word、excel文档内容更新技术方案
需求背景 惯例先说下背景. 生产.研发业务上往往使用大量word和excel文档来作为资料载体,如操作规程.控制手册.卡片--,这些文档会反复使用到一些设备.工艺等参数数据.参数属性主要是名称.编码. ...
- word插入excel文档显示图标的方法
描述:word插入excel文档显示图标的方法 步骤: 菜单栏->插入->对象 由文件创建->浏览文件夹 勾选显示为图标->确定 文件就被插入word了
- c#获取txt,word,excel文档内容方法
获取txt文档的内容 1 public string ResumeTxt(string path) 2 { 3 string str = string.Empty; 4 ...
- libreoffice python 操作word及excel文档
1.开始.关闭libreoffice服务: 开始之前同步字体文件时间,是因为创建soffice服务时,服务会检查所需加载的文件的时间,如果其认为时间不符,则其可能会重新加载,耗时较长,因此需事先统一时 ...
- Word及Excel文档的Python脚本处理
第一部分. Openpyxl部分: 1. 使用安装openpyxl的正确的指令是: A. pip install openpyxl B. install openpyxl C. setup openp ...
- libreoffice python_libreoffice python 操作word及excel文档的方法
1.开始.关闭libreoffice服务: 开始之前同步字体文件时间,是因为创建soffice服务时,服务会检查所需加载的文件的时间,如果其认为时间不符,则其可能会重新加载,耗时较长,因此需事先统一时 ...
- php word excel,PHP 生成word 和 excel 文档
xmlns="http://www.w3.org/TR/REC-html40"> word 中要显示的内容, 由于word支持html格式, 所以中间这一部分使用html文档 ...
- springboot中使用freemarker根据flt模板导出word、pdf文档
1.导包: <!--FreeMarker --> <dependency><groupId>org.springframework.boot</groupId ...
最新文章
- 网络推广——网络推广专员从多角度分析网站关键词排名受影响因素
- 数据库系列之T-SQL(存储过程)
- 在导出本地文件时报了ABAP错误
- 销售流程图_每天一个流程图制作——销售发货业务流程图-19
- group by用法 mysql_MYSQL GROUP BY用法详解
- Linux基础-2文件及目录管理
- JAVA 中的 Collection 和 Map 以及相关派生类的概念
- 从ResNet101到ResNet50
- 【干货】前端开发者最常用的六款IDE
- 解决Windows聚焦不更新图片问题
- CorelDRAW零基础入门到精通
- Ubuntu设置静态IP地址的几种方法
- python控制风扇_Python语音控制普通风扇实现教程
- VMware中性能分配的问题
- pmp项目管理师证书有用么?
- Jyutping(粵拼)詳細教程
- Git stash 的用法,将暂存区的内容缓存并移除,解决切换分支前的内容缓存问题
- 知乎万赞:计算机应届生月薪大多是多少?
- ADB 用法大全 【转】
- 王道数据结构代码——线性表
热门文章
- TP-LINK WR840N刷OPENWRT成功(WR841N v7也适用,刷回原厂同样也行)
- 工业机器人的6大应用场景
- 基于jsp+mysql+ssm的办公用品领用管理系统
- 【pytorch】自己实现精简版YOLOV3【二】,通过darknet_53输出的特征图:得到预测框位置、置信度以及目标类别
- 【Linux】CISI与RISC指令集
- 树莓派点亮LED灯需要几行代码?3行。小孩子都能学会
- 2019-HRNet CVPR
- 中国激光雷达行业发展模式及十四五前景预测报告2021-2027年版
- 京东苏宁价格战起底:裸泳者刺向阵痛者
- uni-app editor富文本编辑器