insertExcel.php 4.8 KB

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