From b3aa95bab5796caaf28a06922abf111ae55e37df Mon Sep 17 00:00:00 2001
From: patrick.xu <patrick.xu@broconcentric.com>
Date: 星期六, 20 二月 2021 10:58:39 +0800
Subject: [PATCH] xlsx文件异常处理

---
 src/Bro.M071.Process/M071Process.cs |  520 +++++++++++++++++++++++++++++----------------------------
 1 files changed, 265 insertions(+), 255 deletions(-)

diff --git a/src/Bro.M071.Process/M071Process.cs b/src/Bro.M071.Process/M071Process.cs
index f7b3f92..9f967b6 100644
--- a/src/Bro.M071.Process/M071Process.cs
+++ b/src/Bro.M071.Process/M071Process.cs
@@ -835,304 +835,314 @@
                         Directory.CreateDirectory(Config.LogPath);
                     }
                     var fileName = Path.Combine(Config.LogPath, $"LDSData_{DateTime.Now.ToString("yyyyMMdd")}.xlsx");
-                    //bool isExisted = File.Exists(fileName);
-                    using (ExcelPackage package = new ExcelPackage(new FileInfo(fileName)))
+
+                    try
                     {
-                        ExcelWorksheet rawDataSheet = null;
-                        ExcelWorksheet slantSheet = null;
-                        ExcelWorksheet alignmentSheet = null;
-                        ExcelWorksheet rowAlignmentSheet = null;
-
-                        if (!package.Workbook.Worksheets.Any(s => s.Name == "RawData"))
+                        using (ExcelPackage package = new ExcelPackage(new FileInfo(fileName)))
                         {
-                            package.Workbook.Worksheets.Add("RawData");
-                            rawDataSheet = package.Workbook.Worksheets["RawData"];
-                            for (int i = 0; i < Config.KeyNameCollection.Count; i++)
+                            ExcelWorksheet rawDataSheet = null;
+                            ExcelWorksheet slantSheet = null;
+                            ExcelWorksheet alignmentSheet = null;
+                            ExcelWorksheet rowAlignmentSheet = null;
+
+                            if (!package.Workbook.Worksheets.Any(s => s.Name == "RawData"))
                             {
-                                var cell = rawDataSheet.Cells[i + 3, 1];
-                                cell.Value = Config.KeyNameCollection[i];
-                                SetTitleCell(cell, false);
+                                package.Workbook.Worksheets.Add("RawData");
+                                rawDataSheet = package.Workbook.Worksheets["RawData"];
+                                for (int i = 0; i < Config.KeyNameCollection.Count; i++)
+                                {
+                                    var cell = rawDataSheet.Cells[i + 3, 1];
+                                    cell.Value = Config.KeyNameCollection[i];
+                                    SetTitleCell(cell, false);
+                                }
                             }
-                        }
-                        rawDataSheet = package.Workbook.Worksheets["RawData"];
+                            rawDataSheet = package.Workbook.Worksheets["RawData"];
 
-                        if (!package.Workbook.Worksheets.Any(s => s.Name == "Slant"))
-                        {
-                            package.Workbook.Worksheets.Add("Slant");
+                            if (!package.Workbook.Worksheets.Any(s => s.Name == "Slant"))
+                            {
+                                package.Workbook.Worksheets.Add("Slant");
+                                slantSheet = package.Workbook.Worksheets["Slant"];
+
+                                var keyCell = slantSheet.Cells[2, 1];
+                                keyCell.Value = "Key";
+                                SetTitleCell(keyCell);
+
+                                for (int i = 0; i < Config.KeyNameCollection.Count; i++)
+                                {
+                                    var cell = slantSheet.Cells[i + 3, 1];
+                                    cell.Value = Config.KeyNameCollection[i];
+                                    SetTitleCell(cell, false);
+                                }
+                            }
                             slantSheet = package.Workbook.Worksheets["Slant"];
 
-                            var keyCell = slantSheet.Cells[2, 1];
-                            keyCell.Value = "Key";
-                            SetTitleCell(keyCell);
-
-                            for (int i = 0; i < Config.KeyNameCollection.Count; i++)
+                            if (!package.Workbook.Worksheets.Any(s => s.Name == "Alignment"))
                             {
-                                var cell = slantSheet.Cells[i + 3, 1];
-                                cell.Value = Config.KeyNameCollection[i];
-                                SetTitleCell(cell, false);
-                            }
-                        }
-                        slantSheet = package.Workbook.Worksheets["Slant"];
+                                package.Workbook.Worksheets.Add("Alignment");
+                                alignmentSheet = package.Workbook.Worksheets["Alignment"];
 
-                        if (!package.Workbook.Worksheets.Any(s => s.Name == "Alignment"))
-                        {
-                            package.Workbook.Worksheets.Add("Alignment");
+                                var keysCell = alignmentSheet.Cells[2, 1];
+                                keysCell.Value = "Keys";
+                                SetTitleCell(keysCell);
+
+                                var positionCell = alignmentSheet.Cells[2, 2];
+                                positionCell.Value = "Positions";
+                                SetTitleCell(positionCell);
+
+                                var alignmentMeasures = exportData.MeasurementUnitResultList.Where(u => u.MeasurementType.StartsWith("Alignment")).ToList();
+                                for (int i = 0; i < alignmentMeasures.Count(); i++)
+                                {
+                                    var cellKeys = alignmentSheet.Cells[i + 3, 1];
+                                    cellKeys.Value = alignmentMeasures[i].Keys;
+                                    SetTitleCell(cellKeys, false);
+
+                                    var cellPosition = alignmentSheet.Cells[i + 3, 2];
+                                    cellPosition.Value = alignmentMeasures[i].Positions;
+                                    SetTitleCell(cellPosition, false);
+                                }
+                            }
                             alignmentSheet = package.Workbook.Worksheets["Alignment"];
 
-                            var keysCell = alignmentSheet.Cells[2, 1];
-                            keysCell.Value = "Keys";
-                            SetTitleCell(keysCell);
-
-                            var positionCell = alignmentSheet.Cells[2, 2];
-                            positionCell.Value = "Positions";
-                            SetTitleCell(positionCell);
-
-                            var alignmentMeasures = exportData.MeasurementUnitResultList.Where(u => u.MeasurementType.StartsWith("Alignment")).ToList();
-                            for (int i = 0; i < alignmentMeasures.Count(); i++)
+                            if (!package.Workbook.Worksheets.Any(s => s.Name == "RowAlignment"))
                             {
-                                var cellKeys = alignmentSheet.Cells[i + 3, 1];
-                                cellKeys.Value = alignmentMeasures[i].Keys;
-                                SetTitleCell(cellKeys, false);
+                                package.Workbook.Worksheets.Add("RowAlignment");
+                                rowAlignmentSheet = package.Workbook.Worksheets["RowAlignment"];
 
-                                var cellPosition = alignmentSheet.Cells[i + 3, 2];
-                                cellPosition.Value = alignmentMeasures[i].Positions;
-                                SetTitleCell(cellPosition, false);
+                                var keysCell = rowAlignmentSheet.Cells[2, 1];
+                                keysCell.Value = "Keys";
+                                SetTitleCell(keysCell);
+
+                                var positionCell = rowAlignmentSheet.Cells[2, 2];
+                                positionCell.Value = "Positions";
+                                SetTitleCell(positionCell);
+
+                                var rowAlignmentMeasures = exportData.MeasurementUnitResultList.Where(u => u.MeasurementType.StartsWith("RowAlignment")).ToList();
+                                for (int i = 0; i < rowAlignmentMeasures.Count(); i++)
+                                {
+                                    var cellKeys = rowAlignmentSheet.Cells[i + 3, 1];
+                                    cellKeys.Value = rowAlignmentMeasures[i].Keys;
+                                    SetTitleCell(cellKeys, false);
+
+                                    var cellPosition = rowAlignmentSheet.Cells[i + 3, 2];
+                                    cellPosition.Value = rowAlignmentMeasures[i].Positions;
+                                    SetTitleCell(cellPosition, false);
+                                }
                             }
-                        }
-                        alignmentSheet = package.Workbook.Worksheets["Alignment"];
-
-                        if (!package.Workbook.Worksheets.Any(s => s.Name == "RowAlignment"))
-                        {
-                            package.Workbook.Worksheets.Add("RowAlignment");
                             rowAlignmentSheet = package.Workbook.Worksheets["RowAlignment"];
 
-                            var keysCell = rowAlignmentSheet.Cells[2, 1];
-                            keysCell.Value = "Keys";
-                            SetTitleCell(keysCell);
-
-                            var positionCell = rowAlignmentSheet.Cells[2, 2];
-                            positionCell.Value = "Positions";
-                            SetTitleCell(positionCell);
-
-                            var rowAlignmentMeasures = exportData.MeasurementUnitResultList.Where(u => u.MeasurementType.StartsWith("RowAlignment")).ToList();
-                            for (int i = 0; i < rowAlignmentMeasures.Count(); i++)
+                            #region RawData
                             {
-                                var cellKeys = rowAlignmentSheet.Cells[i + 3, 1];
-                                cellKeys.Value = rowAlignmentMeasures[i].Keys;
-                                SetTitleCell(cellKeys, false);
-
-                                var cellPosition = rowAlignmentSheet.Cells[i + 3, 2];
-                                cellPosition.Value = rowAlignmentMeasures[i].Positions;
-                                SetTitleCell(cellPosition, false);
-                            }
-                        }
-                        rowAlignmentSheet = package.Workbook.Worksheets["RowAlignment"];
-
-                        #region RawData
-                        {
-                            int rowDataStartCol = rawDataSheet.Dimension.Columns;
-                            var barcodeCell = rawDataSheet.Cells[1, rowDataStartCol + 1, 1, rowDataStartCol + 4];
-                            barcodeCell.Merge = true;
-                            barcodeCell.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
-                            barcodeCell.Value = exportData.ProductionMeasurementRecord.ProductionBarcode;
-                            SetTitleCell(barcodeCell);
-
-                            var z1Cell = rawDataSheet.Cells[2, rowDataStartCol + 1];
-                            z1Cell.Value = "Z1";
-                            SetTitleCell(z1Cell);
-
-                            var z2Cell = rawDataSheet.Cells[2, rowDataStartCol + 2];
-                            z2Cell.Value = "Z2";
-                            SetTitleCell(z2Cell);
-
-                            var z3Cell = rawDataSheet.Cells[2, rowDataStartCol + 3];
-                            z3Cell.Value = "Z3";
-                            SetTitleCell(z3Cell);
-
-                            var z4Cell = rawDataSheet.Cells[2, rowDataStartCol + 4];
-                            z4Cell.Value = "Z4";
-                            SetTitleCell(z4Cell);
-
-                            exportData.KeyUnitDataList.ForEach(k =>
-                            {
-                                int keyIndex = Config.KeyNameCollection.IndexOf(k.Key);
-                                if (keyIndex < 0)
-                                {
-                                    LogAsync(DateTime.Now, "Excel瀵煎嚭閿欒", $"{k.Key}鐨凴awData鏈兘鑾峰彇琛屼俊鎭紝鏈鍑�");
-                                    return;
-                                }
-
-                                int zIndex = int.Parse(k.MeasurementItem.Substring(1));
-
-                                var cell = rawDataSheet.Cells[keyIndex + 1 + 2, rowDataStartCol + zIndex];
-                                cell.Value = string.IsNullOrWhiteSpace(k.ItemValue) ? "NA" : k.ItemValue;
-                            });
-                        }
-                        #endregion
-
-                        #region Slant
-                        var slantMeasures = exportData.MeasurementUnitResultList.Where(u => u.MeasurementType.StartsWith("Slant")).ToList();
-                        if (slantMeasures.Count > 0)
-                        {
-                            int slantStartCol = slantSheet.Dimension.Columns;
-
-                            var barcodeCell = slantSheet.Cells[1, slantStartCol + 1];
-                            barcodeCell.Value = exportData.ProductionMeasurementRecord.ProductionBarcode;
-                            SetTitleCell(barcodeCell);
-
-                            var valueCell = slantSheet.Cells[2, slantStartCol + 1];
-                            valueCell.Value = "Value";
-                            SetTitleCell(valueCell);
-
-                            slantMeasures.ForEach(m =>
-                            {
-                                int rowIndex = Config.KeyNameCollection.IndexOf(m.Keys);
-                                if (rowIndex < 0)
-                                {
-                                    LogAsync(DateTime.Now, "Excel瀵煎嚭閿欒", $"{m.Keys}鐨凷lant鏈兘鑾峰彇琛屼俊鎭紝鏈鍑�");
-                                    return;
-                                }
-
-                                var cellValue = slantSheet.Cells[rowIndex + 1 + 2, slantStartCol + 1];
-                                //var cellResult = slantSheet.Cells[rowIndex + 1 + 2, slantStartCol + 2];
-
-                                cellValue.Value = m.MeasurementValue;
-                                //cellResult.Value = m.MeasurementResult;
-
-                                if (m.MeasurementResult != "OK")
-                                {
-                                    SetNGCell(cellValue);
-                                    //SetNGCell(cellResult);
-                                }
-                            });
-                        }
-                        #endregion
-
-                        #region Alignment
-                        {
-                            var alignmentMeasures = exportData.MeasurementUnitResultList.Where(u => u.MeasurementType.StartsWith("Alignment")).ToList();
-                            if (alignmentMeasures.Count > 0)
-                            {
-                                List<string> keysList = new List<string>();
-                                int allRowNums = alignmentSheet.Dimension.Rows;
-                                int aligneStartCol = alignmentSheet.Dimension.Columns;
-
-                                for (int i = 3; i <= alignmentSheet.Dimension.End.Row; i++)
-                                {
-                                    string keys = alignmentSheet.Cells[i, 1].Value.ToString();
-                                    string position = alignmentSheet.Cells[i, 2].Value.ToString();
-
-                                    keysList.Add($"{keys}_{position}");
-                                }
-
-                                //var barcodeCell = alignmentSheet.Cells[1, aligneStartCol + 1, 1, aligneStartCol + 2];
-                                //barcodeCell.Merge = true;
-                                //barcodeCell.Value = exportData.ProductionMeasurementRecord.ProductionBarcode;
-                                //SetTitleCell(barcodeCell);
-
-                                var barcodeCell = alignmentSheet.Cells[1, aligneStartCol + 1];
+                                int rowDataStartCol = rawDataSheet.Dimension.Columns;
+                                var barcodeCell = rawDataSheet.Cells[1, rowDataStartCol + 1, 1, rowDataStartCol + 4];
+                                barcodeCell.Merge = true;
+                                barcodeCell.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
                                 barcodeCell.Value = exportData.ProductionMeasurementRecord.ProductionBarcode;
                                 SetTitleCell(barcodeCell);
 
-                                var valueCell = alignmentSheet.Cells[2, aligneStartCol + 1];
-                                valueCell.Value = "Value";
-                                SetTitleCell(valueCell);
+                                var z1Cell = rawDataSheet.Cells[2, rowDataStartCol + 1];
+                                z1Cell.Value = "Z1";
+                                SetTitleCell(z1Cell);
 
-                                //var resultCell = alignmentSheet.Cells[2, aligneStartCol + 2];
-                                //resultCell.Value = "Result";
-                                //SetTitleCell(resultCell);
+                                var z2Cell = rawDataSheet.Cells[2, rowDataStartCol + 2];
+                                z2Cell.Value = "Z2";
+                                SetTitleCell(z2Cell);
 
-                                alignmentMeasures.ForEach(a =>
+                                var z3Cell = rawDataSheet.Cells[2, rowDataStartCol + 3];
+                                z3Cell.Value = "Z3";
+                                SetTitleCell(z3Cell);
+
+                                var z4Cell = rawDataSheet.Cells[2, rowDataStartCol + 4];
+                                z4Cell.Value = "Z4";
+                                SetTitleCell(z4Cell);
+
+                                exportData.KeyUnitDataList.ForEach(k =>
                                 {
-                                    int rowIndex = keysList.IndexOf($"{a.Keys}_{a.Positions}");
-                                    if (rowIndex < 0)
+                                    int keyIndex = Config.KeyNameCollection.IndexOf(k.Key);
+                                    if (keyIndex < 0)
                                     {
-                                        LogAsync(DateTime.Now, "Excel瀵煎嚭閿欒", $"{a.Keys}_{a.Positions}鐨凙lignment鏈兘鑾峰彇琛屼俊鎭紝鏈鍑�");
+                                        LogAsync(DateTime.Now, "Excel瀵煎嚭閿欒", $"{k.Key}鐨凴awData鏈兘鑾峰彇琛屼俊鎭紝鏈鍑�");
                                         return;
                                     }
 
-                                    var cellValue = alignmentSheet.Cells[rowIndex + 1 + 2, aligneStartCol + 1];
-                                    //var cellResult = alignmentSheet.Cells[rowIndex + 1 + 2, aligneStartCol + 2];
+                                    int zIndex = int.Parse(k.MeasurementItem.Substring(1));
 
-                                    cellValue.Value = a.MeasurementValue;
-                                    //cellResult.Value = a.MeasurementResult;
+                                    var cell = rawDataSheet.Cells[keyIndex + 1 + 2, rowDataStartCol + zIndex];
+                                    cell.Value = string.IsNullOrWhiteSpace(k.ItemValue) ? "NA" : k.ItemValue;
+                                });
+                            }
+                            #endregion
 
-                                    if (a.MeasurementResult != "OK")
+                            #region Slant
+                            var slantMeasures = exportData.MeasurementUnitResultList.Where(u => u.MeasurementType.StartsWith("Slant")).ToList();
+                            if (slantMeasures.Count > 0)
+                            {
+                                int slantStartCol = slantSheet.Dimension.Columns;
+
+                                var barcodeCell = slantSheet.Cells[1, slantStartCol + 1];
+                                barcodeCell.Value = exportData.ProductionMeasurementRecord.ProductionBarcode;
+                                SetTitleCell(barcodeCell);
+
+                                var valueCell = slantSheet.Cells[2, slantStartCol + 1];
+                                valueCell.Value = "Value";
+                                SetTitleCell(valueCell);
+
+                                slantMeasures.ForEach(m =>
+                                {
+                                    int rowIndex = Config.KeyNameCollection.IndexOf(m.Keys);
+                                    if (rowIndex < 0)
+                                    {
+                                        LogAsync(DateTime.Now, "Excel瀵煎嚭閿欒", $"{m.Keys}鐨凷lant鏈兘鑾峰彇琛屼俊鎭紝鏈鍑�");
+                                        return;
+                                    }
+
+                                    var cellValue = slantSheet.Cells[rowIndex + 1 + 2, slantStartCol + 1];
+                                    //var cellResult = slantSheet.Cells[rowIndex + 1 + 2, slantStartCol + 2];
+
+                                    cellValue.Value = m.MeasurementValue;
+                                    //cellResult.Value = m.MeasurementResult;
+
+                                    if (m.MeasurementResult != "OK")
                                     {
                                         SetNGCell(cellValue);
                                         //SetNGCell(cellResult);
                                     }
                                 });
                             }
-                        }
-                        #endregion
+                            #endregion
 
-                        #region RowAlignment
-                        {
-                            var rowAlignmentMeasures = exportData.MeasurementUnitResultList.Where(u => u.MeasurementType.StartsWith("RowAlignment")).ToList();
-                            if (rowAlignmentMeasures.Count > 0)
+                            #region Alignment
                             {
-                                List<string> keysList = new List<string>();
-                                int allRowNums = rowAlignmentSheet.Dimension.Rows;
-                                int aligneStartCol = rowAlignmentSheet.Dimension.Columns;
-
-                                for (int i = 3; i <= allRowNums; i++)
+                                var alignmentMeasures = exportData.MeasurementUnitResultList.Where(u => u.MeasurementType.StartsWith("Alignment")).ToList();
+                                if (alignmentMeasures.Count > 0)
                                 {
-                                    string keys = alignmentSheet.Cells[i, 1].Value.ToString();
-                                    string position = alignmentSheet.Cells[i, 2].Value.ToString();
+                                    List<string> keysList = new List<string>();
+                                    int allRowNums = alignmentSheet.Dimension.Rows;
+                                    int aligneStartCol = alignmentSheet.Dimension.Columns;
 
-                                    keysList.Add($"{keys}_{position}");
+                                    for (int i = 3; i <= alignmentSheet.Dimension.End.Row; i++)
+                                    {
+                                        string keys = alignmentSheet.Cells[i, 1].Value.ToString();
+                                        string position = alignmentSheet.Cells[i, 2].Value.ToString();
+
+                                        keysList.Add($"{keys}_{position}");
+                                    }
+
+                                    //var barcodeCell = alignmentSheet.Cells[1, aligneStartCol + 1, 1, aligneStartCol + 2];
+                                    //barcodeCell.Merge = true;
+                                    //barcodeCell.Value = exportData.ProductionMeasurementRecord.ProductionBarcode;
+                                    //SetTitleCell(barcodeCell);
+
+                                    var barcodeCell = alignmentSheet.Cells[1, aligneStartCol + 1];
+                                    barcodeCell.Value = exportData.ProductionMeasurementRecord.ProductionBarcode;
+                                    SetTitleCell(barcodeCell);
+
+                                    var valueCell = alignmentSheet.Cells[2, aligneStartCol + 1];
+                                    valueCell.Value = "Value";
+                                    SetTitleCell(valueCell);
+
+                                    //var resultCell = alignmentSheet.Cells[2, aligneStartCol + 2];
+                                    //resultCell.Value = "Result";
+                                    //SetTitleCell(resultCell);
+
+                                    alignmentMeasures.ForEach(a =>
+                                    {
+                                        int rowIndex = keysList.IndexOf($"{a.Keys}_{a.Positions}");
+                                        if (rowIndex < 0)
+                                        {
+                                            LogAsync(DateTime.Now, "Excel瀵煎嚭閿欒", $"{a.Keys}_{a.Positions}鐨凙lignment鏈兘鑾峰彇琛屼俊鎭紝鏈鍑�");
+                                            return;
+                                        }
+
+                                        var cellValue = alignmentSheet.Cells[rowIndex + 1 + 2, aligneStartCol + 1];
+                                        //var cellResult = alignmentSheet.Cells[rowIndex + 1 + 2, aligneStartCol + 2];
+
+                                        cellValue.Value = a.MeasurementValue;
+                                        //cellResult.Value = a.MeasurementResult;
+
+                                        if (a.MeasurementResult != "OK")
+                                        {
+                                            SetNGCell(cellValue);
+                                            //SetNGCell(cellResult);
+                                        }
+                                    });
                                 }
-
-                                //var barcodeCell = rowAlignmentSheet.Cells[1, aligneStartCol + 1, 1, aligneStartCol + 2];
-                                //barcodeCell.Merge = true;
-                                //barcodeCell.Value = exportData.ProductionMeasurementRecord.ProductionBarcode;
-                                //SetTitleCell(barcodeCell);
-
-                                var barcodeCell = rowAlignmentSheet.Cells[1, aligneStartCol + 1];
-                                barcodeCell.Value = exportData.ProductionMeasurementRecord.ProductionBarcode;
-                                SetTitleCell(barcodeCell);
-
-                                var valueCell = rowAlignmentSheet.Cells[2, aligneStartCol + 1];
-                                valueCell.Value = "Value";
-                                SetTitleCell(valueCell);
-
-                                //var resultCell = rowAlignmentSheet.Cells[2, aligneStartCol + 2];
-                                //resultCell.Value = "Result";
-                                //SetTitleCell(resultCell);
-
-                                rowAlignmentMeasures.ForEach(a =>
-                                {
-                                    int rowIndex = keysList.IndexOf($"{a.Keys}_{a.Positions}");
-                                    if (rowIndex < 0)
-                                    {
-                                        LogAsync(DateTime.Now, "Excel瀵煎嚭閿欒", $"{a.Keys}_{a.Positions}鐨凴owAlignment鏈兘鑾峰彇琛屼俊鎭紝鏈鍑�");
-                                        return;
-                                    }
-
-                                    var cellValue = rowAlignmentSheet.Cells[rowIndex + 1 + 2, aligneStartCol + 1];
-                                    //var cellResult = rowAlignmentSheet.Cells[rowIndex + 1 + 2, aligneStartCol + 2];
-
-                                    cellValue.Value = a.MeasurementValue;
-                                    //cellResult.Value = a.MeasurementResult;
-
-                                    if (a.MeasurementResult != "OK")
-                                    {
-                                        SetNGCell(cellValue);
-                                        //SetNGCell(cellResult);
-                                    }
-                                });
                             }
-                        }
-                        #endregion
+                            #endregion
 
-                        package.Save();
+                            #region RowAlignment
+                            {
+                                var rowAlignmentMeasures = exportData.MeasurementUnitResultList.Where(u => u.MeasurementType.StartsWith("RowAlignment")).ToList();
+                                if (rowAlignmentMeasures.Count > 0)
+                                {
+                                    List<string> keysList = new List<string>();
+                                    int allRowNums = rowAlignmentSheet.Dimension.Rows;
+                                    int aligneStartCol = rowAlignmentSheet.Dimension.Columns;
 
-                        rawDataSheet.Dispose();
-                        slantSheet.Dispose();
-                        alignmentSheet.Dispose();
-                        rowAlignmentSheet.Dispose();
-                    };
+                                    for (int i = 3; i <= allRowNums; i++)
+                                    {
+                                        string keys = alignmentSheet.Cells[i, 1].Value.ToString();
+                                        string position = alignmentSheet.Cells[i, 2].Value.ToString();
+
+                                        keysList.Add($"{keys}_{position}");
+                                    }
+
+                                    //var barcodeCell = rowAlignmentSheet.Cells[1, aligneStartCol + 1, 1, aligneStartCol + 2];
+                                    //barcodeCell.Merge = true;
+                                    //barcodeCell.Value = exportData.ProductionMeasurementRecord.ProductionBarcode;
+                                    //SetTitleCell(barcodeCell);
+
+                                    var barcodeCell = rowAlignmentSheet.Cells[1, aligneStartCol + 1];
+                                    barcodeCell.Value = exportData.ProductionMeasurementRecord.ProductionBarcode;
+                                    SetTitleCell(barcodeCell);
+
+                                    var valueCell = rowAlignmentSheet.Cells[2, aligneStartCol + 1];
+                                    valueCell.Value = "Value";
+                                    SetTitleCell(valueCell);
+
+                                    //var resultCell = rowAlignmentSheet.Cells[2, aligneStartCol + 2];
+                                    //resultCell.Value = "Result";
+                                    //SetTitleCell(resultCell);
+
+                                    rowAlignmentMeasures.ForEach(a =>
+                                    {
+                                        int rowIndex = keysList.IndexOf($"{a.Keys}_{a.Positions}");
+                                        if (rowIndex < 0)
+                                        {
+                                            LogAsync(DateTime.Now, "Excel瀵煎嚭閿欒", $"{a.Keys}_{a.Positions}鐨凴owAlignment鏈兘鑾峰彇琛屼俊鎭紝鏈鍑�");
+                                            return;
+                                        }
+
+                                        var cellValue = rowAlignmentSheet.Cells[rowIndex + 1 + 2, aligneStartCol + 1];
+                                        //var cellResult = rowAlignmentSheet.Cells[rowIndex + 1 + 2, aligneStartCol + 2];
+
+                                        cellValue.Value = a.MeasurementValue;
+                                        //cellResult.Value = a.MeasurementResult;
+
+                                        if (a.MeasurementResult != "OK")
+                                        {
+                                            SetNGCell(cellValue);
+                                            //SetNGCell(cellResult);
+                                        }
+                                    });
+                                }
+                            }
+                            #endregion
+
+                            package.Save();
+
+                            rawDataSheet.Dispose();
+                            slantSheet.Dispose();
+                            alignmentSheet.Dispose();
+                            rowAlignmentSheet.Dispose();
+                        };
+                    }
+                    catch (Exception ex)
+                    {
+                        LogAsync(DateTime.Now, "Excel鏃ュ織寮傚父", ex.GetExceptionMessage());
+                        string bkFileName = Path.Combine(Config.LogPath, $"{Path.GetFileNameWithoutExtension(fileName)}_bk_{DateTime.Now.ToString("HHmmss")}.xlsx");
+                        File.Copy(fileName, bkFileName);
+                        File.Delete(fileName);
+                    }
                 }
             });
         }

--
Gitblit v1.8.0