getExcel.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <?php
  2. require '../../../vendor/autoload.php';
  3. include("../sql.php");
  4. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  5. use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
  6. $ajax = array();
  7. $connectionInfo = array("Database" => "$dbname", "UID" => "$username", "PWD" => "$password", "CharacterSet" => "UTF-8");
  8. $conn = sqlsrv_connect($hostname, $connectionInfo);
  9. if ($conn === false) {
  10. die(print_r(sqlsrv_errors(), true));
  11. }
  12. $fileinfo = array(array("計畫編號", "工程類別", "此計畫是否匯入過"));
  13. $file = '00000.xlsx';
  14. $Category_List = [];
  15. if (isset($_GET['file'])) {
  16. $file = "uploads/{$_GET['file']}";
  17. }
  18. $isImport = '是';
  19. $isImportArray = array();
  20. $project_id = $_GET['projectId'];
  21. $category_id = $_GET['categoryId'];
  22. $sql = "SELECT TOP 1 [project_id] FROM [21000X].[dbo].[File_Table] WHERE [project_id] = '{$project_id}'";
  23. $fetchResult = sqlsrv_query($conn, $sql);
  24. $row = sqlsrv_fetch_array($fetchResult);
  25. if (empty($row)) {
  26. $isImport = '否';
  27. }
  28. $sql = "SELECT [category_name] FROM [Construction_Category] WHERE [category_id] = '{$category_id}'";
  29. $fetchResult = sqlsrv_query($conn, $sql);
  30. $category = sqlsrv_fetch_array($fetchResult)[0];
  31. array_push($fileinfo, array($project_id, $category, $isImport));
  32. $importinfo = array(array("類別", "選擇檔案類型", "是否為新的類型"));
  33. $ajax["0_匯入資訊"] = $fileinfo;
  34. $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
  35. $reader->setReadDataOnly(true);
  36. $reader->setReadEmptyCells(false);
  37. $spreadsheet = $reader->load($file);
  38. $sheetCount = $spreadsheet->getSheetCount();
  39. $all = $spreadsheet->getSheetNames();
  40. for ($s = 0; $s < $sheetCount; $s++) {
  41. if (str_contains($all[$s], "_")) {
  42. $Category = explode("_", $all[$s])[1];
  43. } else if (str_contains($all[$s], ".")) {
  44. $Category = explode(".", $all[$s])[1];
  45. } else {
  46. $Category = $all[$s];
  47. }
  48. $sql = "IF NOT EXISTS (SELECT [type_id] FROM [File_Category] WHERE [type_name] = '{$Category}')
  49. BEGIN
  50. SELECT '是'
  51. END
  52. ELSE
  53. BEGIN
  54. SELECT '否'
  55. END";
  56. $fetchResult = sqlsrv_query($conn, $sql);
  57. while ($row = sqlsrv_fetch_array($fetchResult)) {
  58. array_push($isImportArray, $row[0]);
  59. }
  60. $sql = "SELECT [type_id] FROM [File_Category] WHERE [type_name] = '{$Category}';";
  61. $fetchResult = sqlsrv_query($conn, $sql);
  62. $id = 0;
  63. while ($row = sqlsrv_fetch_array($fetchResult)) {
  64. $id = $row[0];
  65. }
  66. array_push($Category_List, $id);
  67. }
  68. $Category_List_s = implode(",", $Category_List);
  69. $sql = "IF NOT EXISTS (SELECT [list_id] FROM [Category_List] WHERE [category_list] = '{$Category_List_s}')
  70. BEGIN
  71. INSERT INTO [Category_List] ([category_list])
  72. VALUES ('{$Category_List_s}')
  73. END";
  74. $fetchResult = sqlsrv_query($conn, $sql);
  75. for ($s = 0; $s < $sheetCount; $s++) {
  76. $normalCheck = "";
  77. $blueprintCheck = "";
  78. $cancelCheck = "";
  79. $sheet = $spreadsheet->getSheet($s);
  80. $sheetName = $spreadsheet->getSheetNames()[$s];
  81. if (str_contains($sheetName, '成果圖') || str_contains($sheetName, '設計圖')) {
  82. $blueprintCheck = "checked='checked'";
  83. } else {
  84. $normalCheck = "checked='checked'";
  85. }
  86. if (str_contains($sheetName, '目錄') || str_contains($sheetName, '注意')) {
  87. $cancelCheck = "checked='checked'";
  88. }
  89. $cellCollection = $sheet->getCellCollection();
  90. $column = $cellCollection->getHighestRowAndColumn();
  91. $data = array();
  92. for ($i = 1; $i <= $column['row']; $i++) { //行
  93. $row = array();
  94. for ($j = 'A'; $j <= $column['column']; $j++) { //列
  95. $key = $j . $i;
  96. $value = $sheet->getCell($key)->getValue();
  97. array_push($row, $value);
  98. }
  99. array_push($data, $row);
  100. }
  101. $ajax[$sheetName] = $data;
  102. array_push($importinfo, array($sheetName, "<input type='radio' id='normal{$s}' name='type{$s}' value='[File_table]' {$normalCheck}>
  103. <label for='normal{$s}'>一般檔案</label><br>
  104. <input type='radio' id='blueprint{$s}' name='type{$s}' value='[Blueprint]' {$blueprintCheck}>
  105. <label for='blueprint{$s}'>設計圖或成果圖</label><br>
  106. <input type='radio' id='canel{$s}' name='type{$s}' value='canel' {$cancelCheck}>
  107. <label for='canel{$s}'>不進行匯入</label> ", $isImportArray[$s]));
  108. }
  109. $data["table"] = $ajax;
  110. $data["info"] = $importinfo;
  111. echo json_encode($data, JSON_UNESCAPED_UNICODE);