前言
在上一篇匯出檔案番外篇中,我們已經熟悉了怎樣根據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 =https://www.cnblogs.com/i3yuan/p/ 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 =https://www.cnblogs.com/i3yuan/p/ ByteHelper.StreamToBytes(fileStream); var outdata =https://www.cnblogs.com/i3yuan/p/ 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.原始碼下載
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/44877.html
標籤:.NET Core
