DCRExport.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. /* ==============================================================================
  2. * 功能描述:数据检查结果导出
  3. * 创 建 者:Garrett
  4. * 创建日期:2018/11/5 14:33:42
  5. * ==============================================================================*/
  6. using System;
  7. using System.IO;
  8. using Microsoft.Win32;
  9. using NPOI.SS.UserModel;
  10. using NPOI.XSSF.UserModel;
  11. using SAGA.DotNetUtils;
  12. using SAGA.DotNetUtils.Others;
  13. namespace Saga.PlugIn.ModelCheck
  14. {
  15. /// <summary>
  16. /// DataCheckResultExport
  17. /// </summary>
  18. public static class DCRExport
  19. {
  20. public static string MCRPath = Path.Combine(AppBaseInfo.DllRunPath, @"ModelCheck\ExcelTemplate\模型检查结果输出格式-模版.xlsx");
  21. /// <summary>
  22. /// 获取导出Excel
  23. /// </summary>
  24. /// <returns></returns>
  25. public static string GetExportPath(string defaultPath = null)
  26. {
  27. SaveFileDialog sflg = new SaveFileDialog();
  28. if (File.Exists(defaultPath))
  29. sflg.FileName = defaultPath;
  30. sflg.Filter = "Excel(*.xlsx)|*.xlsx";
  31. if (sflg.ShowDialog() != true) return defaultPath;
  32. string fileName = sflg.FileName;
  33. if (fileName.IsNullOrEmpty())
  34. {
  35. fileName = defaultPath;
  36. }
  37. return fileName;
  38. }
  39. private static string m_FileName= MCRPath;
  40. /// <summary>
  41. /// 设置模版地址
  42. /// </summary>
  43. /// <param name="fileName"></param>
  44. public static void SetTemplatePath(string fileName)
  45. {
  46. m_FileName = fileName;
  47. }
  48. private static IWorkbook m_ExportWorkBook;
  49. public static IWorkbook GetWorkbook(bool isreset = false)
  50. {
  51. if (isreset)
  52. {
  53. ClearWorkbook();
  54. }
  55. if (m_ExportWorkBook == null)
  56. {
  57. if (File.Exists(m_FileName))
  58. {
  59. using (var fileStream = new System.IO.FileStream(m_FileName, FileMode.Open, FileAccess.Read))
  60. {
  61. m_ExportWorkBook = new XSSFWorkbook(fileStream); //xlsx数据读入workbook
  62. }
  63. }
  64. else
  65. {
  66. m_ExportWorkBook = null;
  67. }
  68. }
  69. return m_ExportWorkBook;
  70. }
  71. /// <summary>
  72. /// 联接到指定Sheet页
  73. /// </summary>
  74. /// <param name="sheetName"></param>
  75. /// <returns></returns>
  76. public static XSSFHyperlink CreateLink(string sheetName)
  77. {
  78. XSSFHyperlink link=new XSSFHyperlink(HyperlinkType.Document);
  79. link.Address = $"'{sheetName}'!A1";
  80. return link;
  81. }
  82. /// <summary>
  83. /// 重置workbook
  84. /// </summary>
  85. public static void ClearWorkbook()
  86. {
  87. m_ExportWorkBook = null;
  88. }
  89. /// <summary>
  90. /// 保存
  91. /// </summary>
  92. /// <param name="fileName"></param>
  93. /// <param name="book"></param>
  94. /// <returns></returns>
  95. public static bool Save(string fileName, IWorkbook book)
  96. {
  97. bool result = true;
  98. try
  99. {
  100. bool allVisible = true;
  101. //判断全部都隐藏不保存
  102. for (int i = 0; i < book.NumberOfSheets - 1; i++)
  103. {
  104. bool tempVisible = book.IsSheetVeryHidden(i);
  105. if (!tempVisible)
  106. {
  107. allVisible = false;
  108. }
  109. }
  110. if (allVisible)
  111. {
  112. MessageShowBase.Infomation("所有检查项都通过检查,取消保存");
  113. return result;
  114. }
  115. MemoryStream ms = new MemoryStream();
  116. book.Write(ms);
  117. using (System.IO.FileStream fs = new System.IO.FileStream(fileName, FileMode.Create, FileAccess.Write))
  118. {
  119. byte[] data = ms.ToArray();
  120. fs.Write(data, 0, data.Length);
  121. fs.Flush();
  122. }
  123. ms.Close();
  124. ms.Dispose();
  125. MessageShowBase.Infomation("建模规范检查已完成");
  126. }
  127. catch (Exception e)
  128. {
  129. Console.WriteLine(e);
  130. result = false;
  131. }
  132. return result;
  133. }
  134. }
  135. }