/* ==============================================================================
* 功能描述:数据检查结果导出
* 创 建 者: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;
}
}
}