using DevExpress.XtraEditors;
|
using NPOI.HSSF.UserModel;
|
using System;
|
using System.IO;
|
|
namespace IStation.WinFrmUI.Curve
|
{
|
public partial class ExportToXLS
|
{
|
|
/// <summary>
|
/// 导出
|
/// </summary>
|
public static bool Export(string filePath, Model.FeatCurveExpressGroup curveExpressGroup, int FitPointNumQH = 15)
|
{
|
if (curveExpressGroup == null)
|
return false;
|
|
return Export(filePath, curveExpressGroup.CurveQH, curveExpressGroup.CurveQE, curveExpressGroup.CurveQP, FitPointNumQH);
|
}
|
|
/// <summary>
|
/// 导出
|
/// </summary>
|
public static bool Export(string filePath, Model.CurveExpress CurveExpressQH, Model.CurveExpress CurveExpressQE, Model.CurveExpress CurveExpressQP, int FitPointNumQH = 15)
|
{
|
try
|
{
|
int i = 0;
|
|
#region 初始化表格
|
HSSFWorkbook theBook = InitializeBook(filePath);
|
if (theBook == null)
|
{
|
return false;
|
}
|
|
var theSheet1 = theBook.GetSheet("Sheet1");
|
if (theSheet1 == null)
|
return false;
|
#endregion
|
NPOI.SS.UserModel.IRow rowTile = theSheet1.CreateRow(0);
|
rowTile.CreateCell(0).SetCellValue("序号");//
|
rowTile.CreateCell(1).SetCellValue("流量");
|
rowTile.CreateCell(2).SetCellValue("扬程");
|
rowTile.CreateCell(3).SetCellValue("效率");
|
rowTile.CreateCell(4).SetCellValue("功率");
|
|
//均匀插值点,计算点坐标
|
double rQmin = CurveExpressQH.Min;
|
double rQmax = CurveExpressQH.Max;
|
double space = (rQmax - rQmin) / (FitPointNumQH - 1);
|
double Q = rQmin;
|
double H, E, P;
|
for (i = 0; i < FitPointNumQH; i++)
|
{
|
H = Model.FitCurveHelper.GetFitPointY(CurveExpressQH, Q);
|
P = Model.FitCurveHelper.GetFitPointY(CurveExpressQP, Q);
|
var eta = Model.FitCurveHelper.GetFitPointY(CurveExpressQE, Q);
|
|
|
int col = 0;
|
NPOI.SS.UserModel.IRow rowtemp = theSheet1.CreateRow(i + 1);
|
|
rowtemp.CreateCell(col).SetCellValue(i + 1);//序号
|
col++;
|
rowtemp.CreateCell(col).SetCellValue(MyTrans(Q));
|
col++;
|
rowtemp.CreateCell(col).SetCellValue(MyTrans(H));
|
col++;
|
|
if (CurveExpressQE != null
|
&& Q <= CurveExpressQE.Max
|
&& Q >= CurveExpressQE.Min)
|
{
|
if (Q < 0.1)
|
E = 0;
|
else
|
E = Model.FitCurveHelper.GetFitPointY(CurveExpressQE, Q);
|
rowtemp.CreateCell(col).SetCellValue(MyTrans(E));
|
col++;
|
}
|
|
|
if (CurveExpressQP != null
|
&& Q <= CurveExpressQP.Max
|
&& Q >= CurveExpressQP.Min)
|
{
|
P = Model.FitCurveHelper.GetFitPointY(CurveExpressQP, Q);
|
rowtemp.CreateCell(col).SetCellValue(MyTrans(P));
|
col++;
|
}
|
|
|
Q = Q + space;
|
if (Q > CurveExpressQH.Max * 0.9999)
|
Q = CurveExpressQH.Max * 0.9999;
|
}
|
|
//Force excel to recalculate all the formula while open
|
theSheet1.ForceFormulaRecalculation = true;
|
|
//打开一个xls文件,如果没有则自行创建,如果存在myxls.xls文件则在创建是不要打开该文件!
|
using (FileStream fs = File.OpenWrite(filePath))
|
{
|
theBook.Write(fs); //向打开的这个xls文件中写入mySheet表并保存。
|
|
}
|
}
|
catch (TimeoutException ex)
|
{
|
XtraMessageBox.Show("通讯超时,请重试", "Error:249 " + ex.Message);
|
return false;
|
}
|
catch (Exception ex)
|
{
|
XtraMessageBox.Show(ex.ToString());
|
return false;
|
}
|
return true;
|
}
|
|
|
/// 导出
|
/// </summary>
|
public static bool ExportEasyExcel(string filePath, Model.FeatCurveExpressGroup curveExpressGroup, int FitPointNumQH = 15)
|
{
|
if (curveExpressGroup == null)
|
return false;
|
|
return ExportEasyExcel(filePath, curveExpressGroup.CurveQH, curveExpressGroup.CurveQE, curveExpressGroup.CurveQP, FitPointNumQH);
|
}
|
|
|
/// 导出
|
/// </summary>
|
public static bool ExportEasyExcel(string filePath, Model.CurveExpress CurveExpressQH, Model.CurveExpress CurveExpressQE, Model.CurveExpress CurveExpressQP, int FitPointNumQH = 15)
|
{
|
try
|
{
|
int i = 0;
|
|
#region 初始化表格
|
HSSFWorkbook theBook = InitializeBook(filePath);
|
if (theBook == null)
|
{
|
return false;
|
}
|
|
var theSheet1 = theBook.GetSheet("Sheet1");
|
if (theSheet1 == null)
|
return false;
|
#endregion
|
NPOI.SS.UserModel.IRow rowTile = theSheet1.CreateRow(0);
|
rowTile.CreateCell(0).SetCellValue("流量");
|
rowTile.CreateCell(1).SetCellValue("扬程");
|
rowTile.CreateCell(2).SetCellValue("效率");
|
rowTile.CreateCell(3).SetCellValue("功率");
|
|
//均匀插值点,计算点坐标
|
double rQmin = CurveExpressQH.Min;
|
double rQmax = CurveExpressQH.Max;
|
double space = (rQmax - rQmin) / (FitPointNumQH - 1);
|
double Q = rQmin;
|
double H, E, P;
|
for (i = 0; i < FitPointNumQH; i++)
|
{
|
H = Model.FitCurveHelper.GetFitPointY(CurveExpressQH, Q);
|
P = Model.FitCurveHelper.GetFitPointY(CurveExpressQP, Q);
|
var eta = Model.FitCurveHelper.GetFitPointY(CurveExpressQE, Q);
|
|
|
int col = 0;
|
NPOI.SS.UserModel.IRow rowtemp = theSheet1.CreateRow(i + 1);
|
|
rowtemp.CreateCell(col).SetCellValue(MyTrans(Q));
|
col++;
|
rowtemp.CreateCell(col).SetCellValue(MyTrans(H));
|
col++;
|
|
if (CurveExpressQE != null
|
&& Q <= CurveExpressQE.Max
|
&& Q >= CurveExpressQE.Min)
|
{
|
if (Q < 0.1)
|
E = 0;
|
else
|
E = Model.FitCurveHelper.GetFitPointY(CurveExpressQE, Q);
|
rowtemp.CreateCell(col).SetCellValue(MyTrans(E));
|
col++;
|
}
|
|
if (Q <= CurveExpressQP.Max)
|
{
|
|
}
|
|
if (Q >= CurveExpressQP.Min)
|
{
|
|
}
|
|
|
if (CurveExpressQP != null
|
&& Q <= CurveExpressQP.Max
|
&& Q >= CurveExpressQP.Min)
|
{
|
P = Model.FitCurveHelper.GetFitPointY(CurveExpressQP, Q);
|
rowtemp.CreateCell(col).SetCellValue(MyTrans(P));
|
col++;
|
}
|
//if (P==0)
|
//{
|
// var a = 1;
|
//}
|
|
|
Q = Q + space;
|
if (Q > CurveExpressQH.Max * 0.9999)
|
Q = CurveExpressQH.Max * 0.9999;
|
}
|
|
//Force excel to recalculate all the formula while open
|
theSheet1.ForceFormulaRecalculation = true;
|
|
//打开一个xls文件,如果没有则自行创建,如果存在myxls.xls文件则在创建是不要打开该文件!
|
using (FileStream fs = File.OpenWrite(filePath))
|
{
|
theBook.Write(fs); //向打开的这个xls文件中写入mySheet表并保存。
|
|
}
|
}
|
catch (TimeoutException ex)
|
{
|
XtraMessageBox.Show("通讯超时,请重试", "Error:249 " + ex.Message);
|
return false;
|
}
|
catch (Exception ex)
|
{
|
XtraMessageBox.Show(ex.ToString());
|
return false;
|
}
|
return true;
|
}
|
|
|
/// <summary>
|
/// 导出
|
/// </summary>
|
public static bool ExportDefinePoints(string filePath, Model.FeatCurveExpressGroup curveExpressGroup, int FitPointNumQH = 15)
|
{
|
if (curveExpressGroup == null)
|
return false;
|
|
return ExportDefinePoints(filePath, curveExpressGroup.CurveQH, curveExpressGroup.CurveQE, curveExpressGroup.CurveQP, FitPointNumQH);
|
}
|
|
/// <summary>
|
/// 导出
|
/// </summary>
|
public static bool ExportDefinePoints(string filePath, Model.CurveExpress CurveExpressQH, Model.CurveExpress CurveExpressQE, Model.CurveExpress CurveExpressQP, int FitPointNumQH = 15)
|
{
|
try
|
{
|
int i = 0;
|
#region 初始化表格
|
HSSFWorkbook theBook = InitializeBook(filePath);
|
if (theBook == null)
|
{
|
return false;
|
}
|
|
var theSheet1 = theBook.GetSheet("Sheet1");
|
if (theSheet1 == null)
|
return false;
|
#endregion
|
NPOI.SS.UserModel.IRow rowTile = theSheet1.CreateRow(0);
|
rowTile.CreateCell(0).SetCellValue("流量");
|
rowTile.CreateCell(1).SetCellValue("扬程");
|
rowTile.CreateCell(2).SetCellValue("功率");
|
rowTile.CreateCell(3).SetCellValue("效率");
|
|
var qhPoints = CurveExpressQH.DefinePoints;
|
if (qhPoints == null || qhPoints.Count < 1)
|
{
|
qhPoints = CurveExpressQH.GetFitPoints(FitPointNumQH);
|
}
|
if (qhPoints == null || qhPoints.Count < 1)
|
return false;
|
var qePoints = CurveExpressQE.DefinePoints;
|
var qpPoints = CurveExpressQP.DefinePoints;
|
|
//均匀插值点,计算点坐标
|
double rQmin = CurveExpressQH.Min;
|
double rQmax = CurveExpressQH.Max;
|
double space = (rQmax - rQmin) / (FitPointNumQH - 1);
|
double Q = 0;
|
double H, E, P;
|
|
|
foreach (var qhPoint in qhPoints)
|
{
|
Q = qhPoint.X;
|
H = qhPoint.Y;
|
if (qpPoints != null && qpPoints.Count > 0)
|
{
|
var qp = qpPoints.Find(x => x.X == Q);
|
if (qp != null)
|
{
|
P = qp.Y;
|
}
|
else
|
{
|
P = Model.FitCurveHelper.GetFitPointY(CurveExpressQP, Q);
|
}
|
}
|
else
|
{
|
P = Model.FitCurveHelper.GetFitPointY(CurveExpressQP, Q);
|
}
|
|
if (qePoints != null && qePoints.Count > 0)
|
{
|
var qe = qePoints.Find(x => x.X == Q);
|
if (qe != null)
|
{
|
E = qe.Y;
|
}
|
else
|
{
|
E = Model.FitCurveHelper.GetFitPointY(CurveExpressQE, Q);
|
}
|
}
|
else
|
{
|
E = Model.FitCurveHelper.GetFitPointY(CurveExpressQE, Q);
|
}
|
|
int col = 0;
|
i = ++i;
|
NPOI.SS.UserModel.IRow rowtemp = theSheet1.CreateRow(i);
|
rowtemp.CreateCell(col).SetCellValue(MyTrans(Q));
|
col++;
|
rowtemp.CreateCell(col).SetCellValue(MyTrans(H));
|
col++;
|
|
|
if (P == 0)
|
{
|
if (CurveExpressQP != null && Q <= CurveExpressQP.Max && Q >= CurveExpressQP.Min)
|
{
|
P = Model.FitCurveHelper.GetFitPointY(CurveExpressQP, Q);
|
rowtemp.CreateCell(col).SetCellValue(MyTrans(P));
|
col++;
|
}
|
}
|
else
|
{
|
rowtemp.CreateCell(col).SetCellValue(MyTrans(P));
|
col++;
|
}
|
|
if (E == 0)
|
{
|
if (CurveExpressQE != null && Q <= CurveExpressQE.Max && Q >= CurveExpressQE.Min)
|
{
|
if (Q < 0.1)
|
E = 0;
|
else
|
E = Model.FitCurveHelper.GetFitPointY(CurveExpressQE, Q);
|
rowtemp.CreateCell(col).SetCellValue(MyTrans(E));
|
col++;
|
}
|
}
|
else
|
{
|
rowtemp.CreateCell(col).SetCellValue(MyTrans(E));
|
col++;
|
}
|
|
|
}
|
|
//Force excel to recalculate all the formula while open
|
theSheet1.ForceFormulaRecalculation = true;
|
|
//打开一个xls文件,如果没有则自行创建,如果存在myxls.xls文件则在创建是不要打开该文件!
|
using (FileStream fs = File.OpenWrite(filePath))
|
{
|
theBook.Write(fs); //向打开的这个xls文件中写入mySheet表并保存。
|
|
}
|
}
|
catch (TimeoutException ex)
|
{
|
XtraMessageBox.Show("通讯超时,请重试", "Error:249 " + ex.Message);
|
return false;
|
}
|
catch (Exception ex)
|
{
|
XtraMessageBox.Show(ex.ToString());
|
return false;
|
}
|
return true;
|
}
|
|
}
|
}
|