Files
2026-04-07 14:47:36 +08:00

112 lines
6.2 KiB
C#

using OfficeOpenXml;
using System.IO;
public static class ExportHelper
{
static ExportHelper()
{
// 设置许可上下文为非商业用途(开源项目/个人学习)
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
}
public static void ExportBubblePoint(BubblePointEntity entity, string filePath)
{
using var package = new ExcelPackage();
var sheet = package.Workbook.Worksheets.Add("泡点法测试");
sheet.Cells["A1"].Value = "工位"; sheet.Cells["B1"].Value = entity.StationId;
sheet.Cells["A2"].Value = "测试日期"; sheet.Cells["B2"].Value = entity.TestDate.ToString("yyyy-MM-dd HH:mm:ss");
sheet.Cells["A3"].Value = "测试者"; sheet.Cells["B3"].Value = entity.Tester;
sheet.Cells["A4"].Value = "样品类型"; sheet.Cells["B4"].Value = entity.SampleType;
sheet.Cells["A5"].Value = "规格"; sheet.Cells["B5"].Value = entity.SampleSpec;
sheet.Cells["A6"].Value = "室温(°C)"; sheet.Cells["B6"].Value = entity.RoomTemperature;
sheet.Cells["A7"].Value = "浸润时间(h)"; sheet.Cells["B7"].Value = entity.SoakingTime;
sheet.Cells["A8"].Value = "测试液体"; sheet.Cells["B8"].Value = entity.LiquidName;
sheet.Cells["A9"].Value = "液体生产厂家"; sheet.Cells["B9"].Value = entity.LiquidManufacturer;
sheet.Cells["A10"].Value = "泡点压力"; sheet.Cells["B10"].Value = $"{entity.BubblePointPressure} {entity.PressureUnit}";
sheet.Cells["A11"].Value = "最大孔径(μm)"; sheet.Cells["B11"].Value = entity.MaxPoreSize;
package.SaveAs(new FileInfo(filePath));
}
//public static void ExportPoreDistribution(PoreDistributionEntity entity, string filePath)
//{
// using var package = new ExcelPackage();
// var sheet = package.Workbook.Worksheets.Add("孔分布测试");
// sheet.Cells["A1"].Value = "工位"; sheet.Cells["B1"].Value = entity.StationId;
// sheet.Cells["A2"].Value = "测试日期"; sheet.Cells["B2"].Value = entity.TestDate.ToString("yyyy-MM-dd HH:mm:ss");
// sheet.Cells["A3"].Value = "测试者"; sheet.Cells["B3"].Value = entity.Tester;
// sheet.Cells["A4"].Value = "样品类型"; sheet.Cells["B4"].Value = entity.SampleType;
// sheet.Cells["A5"].Value = "规格"; sheet.Cells["B5"].Value = entity.SampleSpec;
// sheet.Cells["A6"].Value = "室温(°C)"; sheet.Cells["B6"].Value = entity.RoomTemperature;
// sheet.Cells["A7"].Value = "浸润时间(h)"; sheet.Cells["B7"].Value = entity.SoakingTime;
// sheet.Cells["A8"].Value = "测试液体"; sheet.Cells["B8"].Value = entity.LiquidName;
// sheet.Cells["A9"].Value = "液体生产厂家"; sheet.Cells["B9"].Value = entity.LiquidManufacturer;
// sheet.Cells["A10"].Value = "泡点压力"; sheet.Cells["B10"].Value = $"{entity.BubblePointPressure} {entity.PressureUnit}";
// sheet.Cells["A11"].Value = "平均孔径(μm)"; sheet.Cells["B11"].Value = entity.AveragePoreSize;
// // 数据点表格
// sheet.Cells["A13"].Value = "压力"; sheet.Cells["B13"].Value = "湿膜流量(L/min)"; sheet.Cells["C13"].Value = "干膜流量(L/min)";
// int row = 14;
// foreach (var dp in entity.DataPoints)
// {
// sheet.Cells[$"A{row}"].Value = dp.Pressure;
// sheet.Cells[$"B{row}"].Value = dp.WetFlow;
// sheet.Cells[$"C{row}"].Value = dp.DryFlow;
// row++;
// }
// package.SaveAs(new FileInfo(filePath));
//}
public static void ExportPoreDistribution(PoreDistributionEntity entity, string filePath)
{
using var package = new ExcelPackage();
// 公共信息工作表(可选)
var infoSheet = package.Workbook.Worksheets.Add("测试信息");
infoSheet.Cells["A1"].Value = "工位"; infoSheet.Cells["B1"].Value = entity.StationId;
infoSheet.Cells["A2"].Value = "测试日期"; infoSheet.Cells["B2"].Value = entity.TestDate.ToString("yyyy-MM-dd HH:mm:ss");
infoSheet.Cells["A3"].Value = "测试者"; infoSheet.Cells["B3"].Value = entity.Tester;
infoSheet.Cells["A4"].Value = "样品类型"; infoSheet.Cells["B4"].Value = entity.SampleType;
infoSheet.Cells["A5"].Value = "规格"; infoSheet.Cells["B5"].Value = entity.SampleSpec;
infoSheet.Cells["A6"].Value = "室温(°C)"; infoSheet.Cells["B6"].Value = entity.RoomTemperature;
infoSheet.Cells["A7"].Value = "浸润时间(h)"; infoSheet.Cells["B7"].Value = entity.SoakingTime;
infoSheet.Cells["A8"].Value = "测试液体"; infoSheet.Cells["B8"].Value = entity.LiquidName;
infoSheet.Cells["A9"].Value = "液体生产厂家"; infoSheet.Cells["B9"].Value = entity.LiquidManufacturer;
infoSheet.Cells["A10"].Value = "压力单位"; infoSheet.Cells["B10"].Value = entity.PressureUnit;
infoSheet.Cells["A11"].Value = "平均孔径(μm)"; infoSheet.Cells["B11"].Value = entity.AveragePoreSize;
// 湿膜数据表(仅保留湿膜流量 > 0 的点)
var wetPoints = entity.DataPoints.Where(dp => dp.WetFlow > 0).OrderBy(dp => dp.Pressure).ToList();
if (wetPoints.Any())
{
var wetSheet = package.Workbook.Worksheets.Add("湿膜数据");
wetSheet.Cells["A1"].Value = "压力";
wetSheet.Cells["B1"].Value = "湿膜流量(L/min)";
int row = 2;
foreach (var dp in wetPoints)
{
wetSheet.Cells[$"A{row}"].Value = dp.Pressure;
wetSheet.Cells[$"B{row}"].Value = dp.WetFlow;
row++;
}
}
// 干膜数据表(仅保留干膜流量 > 0 的点)
var dryPoints = entity.DataPoints.Where(dp => dp.DryFlow > 0).OrderBy(dp => dp.Pressure).ToList();
if (dryPoints.Any())
{
var drySheet = package.Workbook.Worksheets.Add("干膜数据");
drySheet.Cells["A1"].Value = "压力";
drySheet.Cells["B1"].Value = "干膜流量(L/min)";
int row = 2;
foreach (var dp in dryPoints)
{
drySheet.Cells[$"A{row}"].Value = dp.Pressure;
drySheet.Cells[$"B{row}"].Value = dp.DryFlow;
row++;
}
}
package.SaveAs(new FileInfo(filePath));
}
}