/* ============================================================================== * 功能描述:数据检查结果导出 * 创 建 者:Garrett * 创建日期:2018/11/5 14:33:42 * ==============================================================================*/ using System; using System.IO; using Microsoft.Win32; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using Saga.PlugIn.CreateFacility; using SAGA.DotNetUtils; using SAGA.DotNetUtils.Others; namespace Saga.PlugIn.ModelCheck { /// /// DataCheckResultExport /// public static class DCRExport { public static string MCRPath = Path.Combine(AppBaseInfo.DllRunPath, @"ModelCheck\ExcelTemplate\模型检查结果输出格式-模版.xlsx"); public static string VerticalPipePath = Path.Combine(AppBaseInfo.DllRunPath, @"VerticalPipeCheck\ExcelTemplate\立管对齐检查-模板.xlsx"); /// /// 获取导出Excel /// /// public static string GetExportPath(string defaultPath = null) { SaveFileDialog sflg = new SaveFileDialog(); if (File.Exists(defaultPath)) sflg.FileName = defaultPath; sflg.Filter = "Excel(*.xlsx)|*.xlsx"; if (sflg.ShowDialog() != true) return defaultPath; string fileName = sflg.FileName; if (fileName.IsNullOrEmpty()) { fileName = defaultPath; } return fileName; } private static string m_FileName= MCRPath; /// /// 设置模版地址 /// /// public static void SetTemplatePath(string fileName) { m_FileName = fileName; } private static IWorkbook m_ExportWorkBook; public static IWorkbook GetWorkbook(bool isreset = false) { if (isreset) { m_ExportWorkBook = null; } if (m_ExportWorkBook == null) { if (File.Exists(m_FileName)) { using (var fileStream = new System.IO.FileStream(m_FileName, FileMode.Open, FileAccess.Read)) { m_ExportWorkBook = new XSSFWorkbook(fileStream); //xlsx数据读入workbook } } else { m_ExportWorkBook = null; } } return m_ExportWorkBook; } /// /// 联接到指定Sheet页 /// /// /// public static XSSFHyperlink CreateLink(string sheetName) { XSSFHyperlink link=new XSSFHyperlink(HyperlinkType.Document); link.Address = $"'{sheetName}'!A1"; return link; } /// /// 重置workbook /// public static void ClearWorkbook(string path) { m_ExportWorkBook = null; SetTemplatePath(path); } /// /// 保存 /// /// /// /// public static bool Save(string fileName, IWorkbook book) { bool result = true; try { //bool allVisible = true; ////判断全部都隐藏不保存 //for (int i = 0; i < book.NumberOfSheets - 1; i++) //{ // bool tempVisible = book.IsSheetVeryHidden(i); // if (!tempVisible) // { // allVisible = false; // } //} //if (allVisible) //{ // MessageShowBase.Infomation("所有检查项都通过检查,取消保存"); // return result; //} MemoryStream ms = new MemoryStream(); book.Write(ms); using (System.IO.FileStream fs = new System.IO.FileStream(fileName, FileMode.Create, FileAccess.Write)) { byte[] data = ms.ToArray(); fs.Write(data, 0, data.Length); fs.Flush(); } ms.Close(); ms.Dispose(); } catch (Exception e) { Console.WriteLine(e); result = false; } return result; } } }