Program.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using ClosedXML.Excel;
  2. var path = @"d:\DEMONET\doc\S1产销协同_UAT测试报告v1.0.xlsx";
  3. using var wb = new XLWorkbook(path);
  4. var outputPath = @"d:\DEMONET\doc\report_verify.txt";
  5. using var writer = new StreamWriter(outputPath, false, System.Text.Encoding.UTF8);
  6. writer.WriteLine("=== Sheets ===");
  7. int totalNormal = 0, totalEx = 0;
  8. foreach (var ws in wb.Worksheets)
  9. {
  10. var lastRow = ws.LastRowUsed()?.RowNumber() ?? 0;
  11. writer.WriteLine($" [{ws.Name}] rows={lastRow}");
  12. // Count exception rows (colored)
  13. if (ws.Name != "目录")
  14. {
  15. for (int r = 12; r <= lastRow; r++)
  16. {
  17. var cell = ws.Cell(r, 1);
  18. if (!cell.IsEmpty())
  19. {
  20. var fill = cell.Style.Fill.BackgroundColor;
  21. if (fill.HasValue && fill.ToString() == "FFFCE4D6")
  22. totalEx++;
  23. else if (!fill.HasValue || fill.ToString() == "FFFFFFFF" || fill.ToString() == "FFFFFF")
  24. {
  25. var val = cell.Value.ToString();
  26. if (!val.Contains("【异常】") && !val.Contains("▼"))
  27. totalNormal++;
  28. }
  29. }
  30. }
  31. }
  32. }
  33. writer.WriteLine();
  34. writer.WriteLine($"Total normal cases: {totalNormal}");
  35. writer.WriteLine($"Total exception cases: {totalEx}");
  36. writer.WriteLine($"Grand total: {totalNormal + totalEx}");
  37. writer.WriteLine();
  38. writer.WriteLine("=== 1 合同评审 (all rows) ===");
  39. var ws1 = wb.Worksheet("1 合同评审");
  40. var lastR = ws1.LastRowUsed()?.RowNumber() ?? 0;
  41. for (int r = 1; r <= lastR; r++)
  42. {
  43. var vals = new List<string>();
  44. for (int c = 1; c <= 20; c++)
  45. {
  46. var cell = ws1.Cell(r, c);
  47. if (!cell.IsEmpty())
  48. {
  49. var fill = cell.Style.Fill.BackgroundColor;
  50. var tag = fill.HasValue && fill.ToString() == "FFFCE4D6" ? "[EX]" : "";
  51. vals.Add($"{cell.Address}{tag}={cell.Value}");
  52. }
  53. }
  54. if (vals.Count > 0)
  55. writer.WriteLine($" Row {r}: {string.Join(" | ", vals)}");
  56. }
  57. writer.WriteLine();
  58. writer.WriteLine("=== DONE ===");