10.20PLC+相机2.3视觉修改
This commit is contained in:
		
							
								
								
									
										82
									
								
								Check.Main/Common/StatisticsExporter.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								Check.Main/Common/StatisticsExporter.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,82 @@ | ||||
| using Check.Main.Camera; | ||||
| using NPOI.SS.UserModel; | ||||
| using NPOI.XSSF.UserModel; | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.IO; | ||||
| using System.Linq; | ||||
| using System.Text; | ||||
| using System.Threading.Tasks; | ||||
| using System.Windows.Forms; | ||||
|  | ||||
| namespace Check.Main.Common | ||||
| { | ||||
|     public static class StatisticsExporter | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// 将给定的统计数据导出到指定的Excel文件路径。 | ||||
|         /// </summary> | ||||
|         /// <param name="data">要导出的统计数据对象。</param> | ||||
|         /// <param name="customFileName">自定义的文件名部分(如 "Reset" 或 "Shutdown")。</param> | ||||
|         public static void ExportToExcel(StatisticsData data, string customFileName) | ||||
|         { | ||||
|             if (data.TotalCount == 0) return; // 如果没有数据,则不导出 | ||||
|  | ||||
|             try | ||||
|             { | ||||
|                 string directory = Path.Combine(Application.StartupPath, "Statistics"); | ||||
|                 Directory.CreateDirectory(directory); // 确保文件夹存在 | ||||
|  | ||||
|                 string fileName = $"Statistics_{customFileName}_{DateTime.Now:yyyy-MM-dd_HH-mm-ss}.xlsx"; | ||||
|                 string filePath = Path.Combine(directory, fileName); | ||||
|  | ||||
|                 // 创建工作簿和工作表 | ||||
|                 IWorkbook workbook = new XSSFWorkbook(); | ||||
|                 ISheet sheet = workbook.CreateSheet("生产统计"); | ||||
|  | ||||
|                 // --- 创建样式 (可选,但能让表格更好看) --- | ||||
|                 IFont boldFont = workbook.CreateFont(); | ||||
|                 boldFont.IsBold = true; | ||||
|                 ICellStyle headerStyle = workbook.CreateCellStyle(); | ||||
|                 headerStyle.SetFont(boldFont); | ||||
|  | ||||
|                 // --- 创建表头 --- | ||||
|                 IRow headerRow = sheet.CreateRow(0); | ||||
|                 headerRow.CreateCell(0).SetCellValue("项目"); | ||||
|                 headerRow.CreateCell(1).SetCellValue("数值"); | ||||
|                 headerRow.GetCell(0).CellStyle = headerStyle; | ||||
|                 headerRow.GetCell(1).CellStyle = headerStyle; | ||||
|  | ||||
|                 // --- 填充数据 --- | ||||
|                 sheet.CreateRow(1).CreateCell(0).SetCellValue("良品数 (OK)"); | ||||
|                 sheet.GetRow(1).CreateCell(1).SetCellValue(data.GoodCount); | ||||
|  | ||||
|                 sheet.CreateRow(2).CreateCell(0).SetCellValue("不良品数 (NG)"); | ||||
|                 sheet.GetRow(2).CreateCell(1).SetCellValue(data.NgCount); | ||||
|  | ||||
|                 sheet.CreateRow(3).CreateCell(0).SetCellValue("产品总数"); | ||||
|                 sheet.GetRow(3).CreateCell(1).SetCellValue(data.TotalCount); | ||||
|  | ||||
|                 sheet.CreateRow(4).CreateCell(0).SetCellValue("良率 (Yield)"); | ||||
|                 sheet.GetRow(4).CreateCell(1).SetCellValue(data.YieldRate.ToString("P2")); | ||||
|  | ||||
|                 // 自动调整列宽 | ||||
|                 sheet.AutoSizeColumn(0); | ||||
|                 sheet.AutoSizeColumn(1); | ||||
|  | ||||
|                 // --- 写入文件 --- | ||||
|                 using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write)) | ||||
|                 { | ||||
|                     workbook.Write(fs); | ||||
|                 } | ||||
|  | ||||
|                 ThreadSafeLogger.Log($"统计数据已成功导出到: {filePath}"); | ||||
|             } | ||||
|             catch (Exception ex) | ||||
|             { | ||||
|                 ThreadSafeLogger.Log($"[ERROR] 导出统计数据失败: {ex.Message}"); | ||||
|                 MessageBox.Show($"导出统计数据失败: {ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user