Excel.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. namespace app\index\controller;
  3. use PhpOffice\PhpSpreadsheet\IOFactory;
  4. class Excel
  5. {
  6. /**
  7. * excel比对,打印比对结果
  8. * @throws \PhpOffice\PhpSpreadsheet\Exception
  9. */
  10. public function compaire()
  11. {
  12. writeln("compaire begin");
  13. $exel = ROOT_DIR . "/excel/rhasd211027.xlsx";
  14. writeln($exel);
  15. $spreadsheet = IOFactory::load($exel);
  16. //格式化数据
  17. $sheet1 = $spreadsheet->getSheet(0);
  18. $array1 = $sheet1->toArray();
  19. foreach ($array1 as $key => $value) {
  20. //银行卡
  21. $array1[$key][1] = str_replace("'", "", $value[1]);
  22. $array1[$key][1] = trim(str_replace(" ", "", $array1[$key][1]));
  23. //状态
  24. $array1[$key][4] = trim($value[4]);
  25. }
  26. $sheet2 = $spreadsheet->getSheet(1);
  27. $array2 = $sheet2->toArray();
  28. foreach ($array2 as $key => $value) {
  29. //银行卡
  30. $array2[$key][4] = str_replace("'", "", $value[4]);
  31. $array2[$key][4] = trim(str_replace(" ", "", $array2[$key][4]));
  32. //状态
  33. $array2[$key][9] = trim($value[9]);
  34. }
  35. //比对
  36. $diffArr = [];
  37. foreach ($array1 as $key1 => $value1) {
  38. if ($key1 == 0) {
  39. continue;
  40. }
  41. //writeln("key1:" . $key1);
  42. $isSame = false;
  43. foreach ($array2 as $key2 => $value2) {
  44. if ($value1[1] == $value2[4] && $value1[4] == $value2[9] && $value1[2] == $value2[6]) {
  45. $isSame = true;
  46. break;
  47. }
  48. }
  49. if (!$isSame) {
  50. $diffArr[] = $value1;
  51. }
  52. }
  53. writeln("差异的记录:");
  54. foreach ($diffArr as $key => $value) {
  55. writeln($value);
  56. }
  57. writeln("compaire end");
  58. }
  59. }