内容简介:在上一篇导出文档番外篇中,我们已经熟悉了怎样根据json数据导出word的文档,生成接口文档,而在这一篇,将对上一篇进行完善补充,增加多种导出方式,实现更加完善的导出功能。1. 获取Swagger接口文档的Json文件2. 解析Json文件数据填充到Html的表格中
前言
在上一篇导出文档番外篇中,我们已经熟悉了怎样根据json数据导出word的文档,生成接口文档,而在这一篇,将对上一篇进行完善补充,增加多种导出方式,实现更加完善的导出功能。
回顾
1. 获取Swagger接口文档的Json文件
2. 解析Json文件数据填充到Html的表格中
3.根据生成的html转work文档
功能
开始
根据生成的html转work文档
/// <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.doc StreamWriter sw = new StreamWriter(fs); // 创建写入流 sw.WriteLine(html); // 写入Hello World sw.Close(); //关闭文件 fs.Close(); break; case ".xml": document.SaveToFile(addrUrl, FileFormat.Xml); break; case ".svg": document.SaveToFile(addrUrl, FileFormat.SVG); break; default: //保存为Word document.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开源地址
4. 源码下载
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- ASP.NET 开源导入导出库Magicodes.IE 导出Pdf教程
- MrDoc 0.5.0 版本发布,优化 EPUB 导出,新增 PDF 导出,支持自定义思维导图
- php 导出 excel
- oracle导出序列sequence
- vue导出excel表格
- Phoenix 数据导入与导出
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Head First JavaScript程序设计
[美]Eric T. Freeman、[美] Elisabeth Robson / 袁国忠 / 人民邮电出版社 / 2017-9 / 129.00 元
本书语言和版式活泼,内容讲解深入浅出,是难得的JavaScript入门书。本书内容涵盖JavaScript的基本知识以及对象、函数和浏览器文档对象模型等高阶主题。书中配备了大量有趣的实例、图示和练习,让读者轻轻松松掌握JavaScript。一起来看看 《Head First JavaScript程序设计》 这本书的介绍吧!