insertExcel.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. <?php
  2. session_start();
  3. require '../../../vendor/autoload.php';
  4. include("../sql.php");
  5. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  6. use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
  7. $type = array();
  8. $i = 0;
  9. while (isset($_POST["type{$i}"])) {
  10. $type[$i] = $_POST["type{$i}"];
  11. $i++;
  12. }
  13. $ajax = array();
  14. $connectionInfo = array("Database" => "$dbname", "UID" => "$username", "PWD" => "$password", "CharacterSet" => "UTF-8");
  15. $conn = sqlsrv_connect($hostname, $connectionInfo);
  16. if ($conn === false) {
  17. die(print_r(sqlsrv_errors(), true));
  18. }
  19. $Category_List = [];
  20. if (isset($_POST['file'])) {
  21. $file = $_POST['file'];
  22. $project_id = $_POST['projectId'];
  23. $project_name = $_POST['projectName'];
  24. $category_id = $_POST['categoryId'];
  25. } else {
  26. header("Location: ../../../Upload.php#error");
  27. }
  28. $filename = "uploads/{$file}";
  29. $importinfo = array();
  30. $extension = pathinfo($file,PATHINFO_EXTENSION);
  31. if ('csv' == $extension) {
  32. $reader = new \PhpOffice\PhpSpreadsheet\Reader\Csv();
  33. } else if ('xls' == $extension) {
  34. $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xls();
  35. } else
  36. $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
  37. $reader->setReadDataOnly(true);
  38. $reader->setReadEmptyCells(false);
  39. $spreadsheet = $reader->load($filename);
  40. $sheetCount = $spreadsheet->getSheetCount();
  41. $all = $spreadsheet->getSheetNames();
  42. $sql = "DELETE FROM [Blueprint] WHERE [project_id] = ?";
  43. $stmt = sqlsrv_query($conn, $sql, array($project_id));
  44. $sql = "DELETE FROM [File_table] WHERE [project_id] = ?";
  45. $stmt = sqlsrv_query($conn, $sql, array($project_id));
  46. $sql = "IF NOT EXISTS (SELECT [project_id] FROM [Project_Table] WHERE [project_id] = '{$project_id}')
  47. BEGIN
  48. INSERT INTO [dbo].[Project_Table] ([project_id],[project_name],[category_id])
  49. VALUES
  50. (?,?,?)
  51. END";
  52. $stmt = sqlsrv_query($conn, $sql, array($project_id,$project_name,$category_id));
  53. $sql = "SELECT [category_list] FROM [Category_List] WHERE [list_id] = (SELECT [list_id] FROM [Construction_Category] WHERE [category_id] = '{$category_id}');";
  54. $fetchResult = sqlsrv_query($conn, $sql);
  55. while ($row = sqlsrv_fetch_array($fetchResult)) {
  56. $category_list = explode(",", $row[0]);
  57. }
  58. for ($s = 0; $s < $sheetCount; $s++) {
  59. if ($type[$s] != 'cancel') {
  60. // if (str_contains($all[$s], "_")) {
  61. // $Category = explode("_", $all[$s])[1];
  62. // } else if (str_contains($all[$s], ".")) {
  63. // $Category = explode(".", $all[$s])[1];
  64. // } else if (str_contains($all[$s], "-")) {
  65. // $Category = explode("-", $all[$s])[1];
  66. // } else {
  67. // $Category = $all[$s];
  68. // }
  69. // $sql = "DECLARE @filetype_id INT;
  70. // IF NOT EXISTS (SELECT [type_id] FROM [File_Category] WHERE [type_name] = '{$Category}')
  71. // BEGIN
  72. // SET @filetype_id = (SELECT [filetype_id] FROM [21000X].[dbo].[File_Type_Table] WHERE [filetype_name] = '{$type[$s]}')
  73. // INSERT INTO [File_Category] ([type_name],[filetype_id]) VALUES ('{$Category}',@filetype_id);
  74. // END";
  75. // $fetchResult = sqlsrv_query($conn, $sql);
  76. // $sql = "SELECT [type_id] FROM [File_Category] WHERE [type_name] = '{$Category}';";
  77. $type_id = $category_list[$s-1];
  78. // array_push($Category_List, $type_id);
  79. $sheet = $spreadsheet->getSheet($s);
  80. $cellCollection = $sheet->getCellCollection();
  81. $column = $cellCollection->getHighestRowAndColumn();
  82. for ($i = 2; $i <= $column['row']; $i++) { //行
  83. $row = array($project_id, $type_id);
  84. for ($j = 'A'; $j <= $column['column']; $j++) { //列
  85. $key = $j . $i;
  86. $value = $sheet->getCell($key)->getValue();
  87. array_push($row, $value);
  88. }
  89. if ($type[$s] == '[Blueprint]') {
  90. $sql = "INSERT INTO [Blueprint]
  91. ([project_id]
  92. ,[type_id]
  93. ,[SN]
  94. ,[blueprint_id]
  95. ,[original_name]
  96. ,[keyword]
  97. ,[notes]
  98. ,[filename])
  99. VALUES
  100. (?,?,?,?,?,?,?,?)";
  101. } else if ($type[$s] == '[File_Table]') {
  102. $sql = "INSERT INTO [File_Table]
  103. ([project_id]
  104. ,[type_id]
  105. ,[SN]
  106. ,[original_name]
  107. ,[filename]
  108. ,[keyword])
  109. VALUES
  110. (?,?,?,?,?,?)";
  111. array_push($row, '');
  112. }
  113. $stmt = sqlsrv_query($conn, $sql, $row);
  114. // echo "<br>";
  115. }
  116. // echo "<br>";
  117. // echo "<br>";
  118. }
  119. }
  120. // $Category_List_s = implode(",", $Category_List);
  121. $sql = "INSERT INTO [Import_Log] ([UserID],[project_id]) VALUES (?,?)";
  122. $fetchResult = sqlsrv_query($conn, $sql,array($_SESSION['UserID'],$project_id));
  123. sqlsrv_close($conn);
  124. header("Location: ../../../Upload.php?status=success");