前言

在上一篇导出文档番外篇中,我们已经熟悉了怎样根据json数据导出word的文档,生成接口文档,而在这一篇,将对上一篇进行完善补充,增加多种导出方式,实现更加完善的导出功能。

回顾

1. 获取Swagger接口文档的Json文件

2. 解析Json文件数据填充到Html的表格中

3.根据生成的html转work文档

功能

开始

 根据生成的htmlwork文档

        /// <summary>/// 静态页面转文件/// </summary>/// <param name="html">静态页面html</param>/// <param name="type">文件类型</param>/// <param name="contenttype">上下文类型</param>/// <returns></returns>public Stream SwaggerConversHtml(string html, string type, out string contenttype){string fileName = Guid.NewGuid().ToString() + type;//文件存放路径string webRootPath = _hostingEnvironment.WebRootPath;string path = webRootPath + @"\Files\TempFiles\";var addrUrl = path + $"{fileName}";FileStream fileStream = null;var provider = new FileExtensionContentTypeProvider();contenttype = provider.Mappings[type];try{if (!Directory.Exists(path)){Directory.CreateDirectory(path);}var data = Encoding.Default.GetBytes(html);var stream = ByteHelper.BytesToStream(data);//创建Document实例Document document = new Document();//加载HTML文档document.LoadFromStream(stream, FileFormat.Html, XHTMLValidationType.None);switch (type){case ".docx":document.SaveToFile(addrUrl, FileFormat.Docx);break;case ".pdf":document.SaveToFile(addrUrl, FileFormat.PDF);break;case ".html"://document.SaveToFile(addrUrl, FileFormat.Html);//当然了,html 如果不用spire,也可以直接生成FileStream fs = new FileStream(addrUrl, FileMode.Append, FileAccess.Write, FileShare.None);//html直接写入不用spire.docStreamWriter sw = new StreamWriter(fs); // 创建写入流sw.WriteLine(html); // 写入Hello Worldsw.Close(); //关闭文件fs.Close();break;case ".xml":document.SaveToFile(addrUrl, FileFormat.Xml);break;case ".svg":document.SaveToFile(addrUrl, FileFormat.SVG);break;default://保存为Worddocument.SaveToFile(addrUrl, FileFormat.Docx);break;}document.Close();fileStream = File.Open(addrUrl, FileMode.OpenOrCreate);var filedata = ByteHelper.StreamToBytes(fileStream);var outdata = ByteHelper.BytesToStream(filedata);return outdata;}catch (Exception){throw;}finally{if (fileStream != null)fileStream.Close();if (File.Exists(addrUrl))File.Delete(addrUrl);//删掉文件}}

增加导出按钮

function LoadExportApiWordBtn() {$(".information-container").height(240);$(".topbar").height(35);var btnExport = "<div class='selectBox' style='position: absolute;margin: 0;padding: 0;margin-left: 1432px;top: 2.5px;'>" +"<span><a href='javascript:void(0);'>导出离线文档</a></span>" +"<div class='drop'>" +"<ul style='margin: 0;padding: 0;'>" +"<li>" +"<a href='javascript:void(0);' onclick='ExportApiWord(1)'>导出 Word</a>" +"</li>" +"<li>" +"<a href='javascript:void(0);' onclick='ExportApiWord(2)'>导出 PDF</a>" +"</li>" +"<li>" +"<a href='javascript:void(0);' onclick='ExportApiWord(3)'>导出 Html</a>" +"</li >" +"<li>" +"<a href='javascript:void(0);' onclick='ExportApiWord(4)'>导出 Xml</a>" +"</li >" +"<li>" +"<a href='javascript:void(0);' onclick='ExportApiWord(5)'>导出 Svg</a>" +"</li >" +"</ul >" +"</div >" +"</div >";//information-container这个元素是swagger后期动态渲染出来的,所有这里要加个循环判断。//第一次进来如果有这个class直接加载按钮退出if ($("*").hasClass("information-container")) {$(".information-container").append(btnExport);return;}//没有元素等待元素出现在加载按钮timerLoadExportBtn = setInterval(function () {if ($("*").hasClass("information-container")) {$(".information-container").append(btnExport);console.log("load ok");window.clearInterval(timerLoadExportBtn);return;}console.log("loading");}, 788);
}

效果

总结

1. 通过Swagger 导出各类的说明文档,可以根据自己的html模板生成各式的word样式文档说明。

2 .注:搜索关注公众号【DotNet技术谷】--回复【文档生成器】,可获取本篇Swagger生成文档文件。

3. 参考资料:Spire.Doc文件 、Swagger开源地址

基于.NetCore3.1搭建项目系列 —— 使用Swagger导出文档 (补充篇)相关推荐

  1. phpexcel 导出循环增加列数_基于.NetCore3.1搭建项目系列 —— 使用Swagger导出文档 (补充篇)...

    前言 在上一篇导出文档番外篇中,我们已经熟悉了怎样根据json数据导出word的文档,生成接口文档,而在这一篇,将对上一篇进行完善补充,增加多种导出方式,实现更加完善的导出功能. 回顾 1. 获取Sw ...

  2. 基于.NetCore3.1搭建项目系列 —— 使用Swagger导出文档 (番外篇)

    前言 回顾之前的两篇Swagger做Api接口文档,我们大体上学会了如何在net core3.1的项目基础上,搭建一套自动生产API接口说明文档的框架. 本来在Swagger的基础上,前后端开发人员在 ...

  3. 基于.NetCore3.1搭建项目系列 —— 使用Swagger做Api文档(上篇)

    前言 为什么在开发中,接口文档越来越成为前后端开发人员沟通的枢纽呢? 随着业务的发张,项目越来越多,而对于支撑整个项目架构体系而言,我们对系统业务的水平拆分,垂直分层,让业务系统更加清晰,从而产生一系 ...

  4. 基于.NetCore3.1搭建项目系列 —— 使用Swagger做Api文档 (下篇)

    前言 回顾上一篇文章<使用Swagger做Api文档 >,文中介绍了在.net core 3.1中,利用Swagger轻量级框架,如何引入程序包,配置服务,注册中间件,一步一步的实现,最终 ...

  5. 基于.NetCore3.1搭建项目系列 —— 认证授权方案之Swagger加锁

    1 开始 在之前的使用Swagger做Api文档中,我们已经使用Swagger进行开发接口文档,以及更加方便的使用.这一转换,让更多的接口可以以通俗易懂的方式展现给开发人员.而在后续的内容中,为了对a ...

  6. 【Straw-Uniapp-uView】基于 Uniapp + uView 搭建项目基础模板

    文章目录 一.项目简介 1.项目概述 2.相关链接 3.基础功能 4.后端搭建 二.开发手册 全局约束 全局样式约束 全局that约束 代码模板 表单 消息提示 确定取消 http请求 请求拦截器 文 ...

  7. 信创办公--基于WPS的Word最佳实践系列(快速统一文档格式)

    信创办公–基于WPS的Word最佳实践系列(快速统一文档格式) 项目背景 在一篇长文档中,会存在标题和正文的部分,而作为标题,就应该具有和正文有所区分的特殊格式.如果要一个一个标题进行设置,里面的重复 ...

  8. 【愚公系列】2023年02月 WMS智能仓储系统-007.Swagger接口文档的配置

    文章目录 前言 一.Swagger接口文档的配置 1.安装包 2.注入 2.1 Swagger服务的注入 2.2 appsetting.json的配置 2.3 Swagger服务的封装 2.3.1 S ...

  9. swagger api文档_带有Swagger的Spring Rest API –公开文档

    swagger api文档 创建API文档后,将其提供给涉众很重要. 在理想情况下,此发布的文档将足够灵活以解决任何最后的更改,并且易于分发(就成本以及完成此操作所需的时间而言). 为了使之成为可能, ...

最新文章

  1. PostgreSQL_row_number() over()
  2. 闪回恢复区 (Flash Recovery Area)
  3. token验证_Swagger中添加Token验证
  4. 机器学习笔记:岭回归(L2正则化)
  5. 基于NFS实现lamp的负载均衡之二: 部署NFS服务器
  6. python监听剪贴板_Python监听剪切板实现方法代码实例
  7. Python使用psutil模块,做你的电脑管家
  8. 数据结构最佳路径代码_【微服务】149:商品数据结构
  9. @Import-给容器中加载bean的第三种方式
  10. python import自定义模块方法
  11. 视觉SLAM十四讲_4-相机模型和非线性优化
  12. php绕过验证码注册,验证码被绕过的处理方法_PHP教程
  13. 操作系统原理实验(五) 内存管理
  14. 处女座和小姐姐(模拟)
  15. windows下安装php环境(wampserver)
  16. 大文件上传到linux服务器,上传文件到服务器的Linux命令
  17. Activiti7-任务分配
  18. 将iPhone短信完整迁移到安卓系统上的方法
  19. 文件夹如何去除SVN的标记符号
  20. 北斗导航开始提供全球服务;个人所得税 App 已上线

热门文章

  1. Python自动化之语法基础
  2. 轻松搭建Google ADK开发环境
  3. iphone4 短信截获
  4. AJAX,只是一种过渡技术吗?
  5. java windows 取所有任务_Win下,通过Jstack截取Java进程中的堆栈信息
  6. Unity中Time.deltaTime的含义及其应用
  7. Android 干货,强烈推荐
  8. TCP/IP:IP多播选路
  9. 《vSphere性能设计:性能密集场景下CPU、内存、存储及网络的最佳设计实践》一1.2.2 内存...
  10. Windows端口被占用处理方法