upload.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320
  1. <?php
  2. require '../../vendor/autoload.php';
  3. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  4. use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
  5. $target_dir = "../../XLSX/";
  6. //$fileName = basename($_FILES["fileToUpload"]["name"][0]);
  7. $fileName = "EOW ELP ELP補設 (11).xlsx";
  8. $xlsx_file = $target_dir . $fileName;
  9. $uploadOk = true;
  10. $xlsxFileType = strtolower(pathinfo($xlsx_file, PATHINFO_EXTENSION));
  11. /*
  12. File too large : size
  13. Not CSV : CSV
  14. Delete succeeded : DS / DF
  15. INSERT SUCCEEDED : IS / IF
  16. TRUNCATE SUCCEEDED : TS / TF
  17. */
  18. // Check file size
  19. /*
  20. if ($_FILES["fileToUpload"]["size"][0] > 500000) {
  21. echo "size";
  22. $uploadOk = false;
  23. }
  24. // Allow certain file formats
  25. if ($xlsxFileType != "xlsx") {
  26. $uploadOk = false;
  27. }
  28. */
  29. // Check if $uploadOk is set to 0 by an error
  30. if ($uploadOk) {
  31. //if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"][0], $xlsx_file)) {
  32. convertCSV($fileName);
  33. //}
  34. }
  35. function convertCSV($fileName){
  36. $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
  37. if(contains($fileName,"ELP")){
  38. $reader->setLoadSheetsOnly(["ELP (增設)"]);
  39. $spreadsheet = $reader->load("../../XLSX/".$fileName);
  40. $writer = new \PhpOffice\PhpSpreadsheet\Writer\Csv($spreadsheet);
  41. $writer->save("../../CSV/ELP.csv");
  42. $file = "../../CSV/ELP.csv";
  43. importArray("ELP", $file);
  44. $reader->setLoadSheetsOnly(["EOW-1(1230~"]);
  45. $spreadsheet = $reader->load("../../XLSX/".$fileName);
  46. $writer = new \PhpOffice\PhpSpreadsheet\Writer\Csv($spreadsheet);
  47. $writer->save("../../CSV/OW.csv");
  48. $file = "../../CSV/OW.csv";
  49. importArray("OW", $file);
  50. }
  51. }
  52. function importArray($option,$csv_file)
  53. {
  54. $wellName = [];
  55. $m_date = [];
  56. $m_value = [[]];
  57. $wellName_count = 0;
  58. $m_date_count = 0;
  59. $m_value_count_a = -1;
  60. $m_value_count_b = 0;
  61. $row_count = 0;
  62. $csv_row_count = 0;
  63. $encounter = false;
  64. $handle = fopen($csv_file, 'r');
  65. while (($data = fgetcsv($handle)) !== false) {
  66. foreach ($data as $row) {
  67. //echo 'data:'.$data.' row'.$row.'<br>';
  68. //if ($row != "" && $csv_row_count > 0) {
  69. if($csv_row_count > 0){
  70. if (contains($csv_file, "OW") || contains($csv_file, "ELP") || contains($csv_file, "RS") || contains($csv_file, "TI") || contains($csv_file, "SM") || contains($csv_file, "SBM.csv") || contains($csv_file, "VG") || contains($csv_file, "HM")) {
  71. if (contains($row, "/")) {
  72. $arr = explode("(", $row);
  73. $row = $arr[0];
  74. $date_arr = explode("/",$row);
  75. $date_temp = $date_arr[0] + 1911;
  76. $m_date[$m_date_count] = $date_temp.'/'.$date_arr[1].'/'.$date_arr[2];
  77. $m_date_count++;
  78. } else if (contains($row, $option)) {
  79. $encounter = true;
  80. $wellName[$wellName_count] = $row;
  81. $wellName[$wellName_count] = str_replace("-", "_", $wellName[$wellName_count]);
  82. $wellName_count++;
  83. $row_count++;
  84. if ($row_count > 0) {
  85. $m_value_count_a++;
  86. $m_value_count_b = 0;
  87. }
  88. }else {
  89. if($row == "" && $csv_row_count > 1){
  90. $m_value[$m_value_count_a][$m_value_count_b] = null;
  91. }
  92. $m_value[$m_value_count_a][$m_value_count_b] = $row;
  93. $m_value_count_b++;
  94. }
  95. } else if (contains($csv_file, "SID") || contains($csv_file, "SIS")) {
  96. if (contains($row, "/")) {
  97. $row_count++;
  98. if ($row_count > 0) {
  99. $m_value_count_a++;
  100. $m_value_count_b = 0;
  101. }
  102. $date_arr = explode("/",$row);
  103. $date_temp = $date_arr[0] + 1911;
  104. $m_date[$m_date_count] = $date_temp.'/'.$date_arr[1].'/'.$date_arr[2];
  105. $m_date_count++;
  106. } else if ($m_value_count_a > -1) {
  107. $m_value[$m_value_count_a][$m_value_count_b] = $row;
  108. $m_value_count_b++;
  109. }
  110. } else if (contains($csv_file, "SB.csv")) {
  111. if (contains($row, "/")) {
  112. if (substr_count($row, "/") == 1) {
  113. //turns 1/x string into float
  114. $row = str_replace(" ", "", $row);
  115. $pieces = explode("/", $row);
  116. $value = $pieces[0] / $pieces[1];
  117. $m_value[$m_value_count_a][$m_value_count_b] = $value;
  118. $m_value_count_b++;
  119. } else if (substr_count($row, "/") == 2) {
  120. $date_arr = explode("/",$row);
  121. $date_temp = $date_arr[0] + 1911;
  122. $m_date[$m_date_count] = $date_temp.'/'.$date_arr[1].'/'.$date_arr[2];
  123. $m_date_count++;
  124. }
  125. } else if (contains($row, $option)) {
  126. $wellName[$wellName_count] = $row;
  127. $wellName[$wellName_count] = str_replace("-", "_", $wellName[$wellName_count]);
  128. $wellName_count++;
  129. $row_count++;
  130. if ($row_count > 0) {
  131. $m_value_count_a++;
  132. $m_value_count_b = 0;
  133. }
  134. } else {
  135. $m_value[$m_value_count_a][$m_value_count_b] = $row;
  136. $m_value_count_b++;
  137. }
  138. }
  139. }/* else if ($row == "" && $csv_row_count > 0) {
  140. if ((contains($csv_file, "SM") || contains($csv_file, "HM")) && $encounter == true) {
  141. $m_value[$m_value_count_a][$m_value_count_b] = "null";
  142. $m_value_count_b++;
  143. }
  144. }*/
  145. $csv_row_count++;
  146. }
  147. }
  148. print_r($m_value);
  149. import($wellName, $m_date, $m_value, $csv_file, $m_value_count_a, $m_value_count_b, $option);
  150. fclose($handle);
  151. }
  152. function import($wellName, $m_date, $m_value, $csv_file, $m_value_count_a, $m_value_count_b, $option)
  153. {
  154. include "connectSQL.php";
  155. $count = 0;
  156. $is_succeeded = true;
  157. if (contains($csv_file, "ELP") || contains($csv_file, "OW") || contains($csv_file, "RS") || contains($csv_file, "TI") || contains($csv_file, "SM") || contains($csv_file, "SB.csv") || contains($csv_file, "SBM.csv") || contains($csv_file, "VG") || contains($csv_file, "HM")) {
  158. $tableName = $option."data";
  159. //truncate table
  160. $sqlTruncate = "TRUNCATE TABLE C3.dbo." . $tableName;
  161. $fetchResult = sqlsrv_query($conn, $sqlTruncate);
  162. if ($fetchResult == false) {
  163. echo "TF";
  164. } else {
  165. echo "TS";
  166. }
  167. //insert value
  168. for ($b = 0; $b < $m_value_count_b; $b++) {
  169. $str = insertTable($m_date, $m_value, $b, $m_value_count_a);
  170. if ($str != "") {
  171. $sqlInsert = "INSERT INTO C3.dbo." . $tableName . "
  172. VALUES (" . $str . ")";
  173. print_r($sqlInsert);
  174. $fetchResult = sqlsrv_query($conn, $sqlInsert);
  175. if ($fetchResult == false) {
  176. $is_succeeded = false;
  177. }
  178. }else{
  179. break;
  180. }
  181. }
  182. if ($is_succeeded) {
  183. echo "IS";
  184. $sqlInsert = "insert into C3.dbo.DataTime (update_time) values (SYSDATETIME());";
  185. $fetchResult = sqlsrv_query($conn, $sqlInsert);
  186. } else {
  187. echo "IF";
  188. }
  189. } else if (contains($csv_file, "SID") || contains($csv_file, "SIS")) {
  190. if (contains($csv_file, "SID")) {
  191. $tableName = "SIDdata";
  192. } else if (contains($csv_file, "SIS")) {
  193. $tableName = "SISdata";
  194. }
  195. //delete data
  196. $sqlDelete = "DELETE FROM [C3].[dbo].[" . $tableName . "] WHERE e_name = '" . $option . "'";
  197. $fetchResult = sqlsrv_query($conn, $sqlDelete);
  198. if ($fetchResult == false) {
  199. echo "DF";
  200. } else {
  201. echo "DS";
  202. }
  203. //insert data
  204. for ($b = 0; $b <= $m_value_count_a; $b++) {
  205. $str = insertTableSIDSIS($m_value, $b);
  206. $strColumnName = getColumnName($m_value, $b);
  207. $sqlInsert = "INSERT INTO C3.dbo." . $tableName . " (e_name, m_date, " . $strColumnName . ")
  208. VALUES ('" . $option . "','" . $m_date[$b] . "',
  209. " . $str . "
  210. )";
  211. $fetchResult = sqlsrv_query($conn, $sqlInsert);
  212. if ($fetchResult == false) {
  213. $is_succeeded = false;
  214. }
  215. }
  216. if($is_succeeded){
  217. echo "IS";
  218. $sqlInsert = "insert into C3.dbo.DataTime (update_time) values (SYSDATETIME());";
  219. $fetchResult = sqlsrv_query($conn, $sqlInsert);
  220. }else{
  221. echo "IF";
  222. }
  223. }
  224. sqlsrv_close($conn);
  225. //header("Location: ../../index.php");
  226. }
  227. function contains($str, $target)
  228. {
  229. if (stripos($str, $target) !== false) {
  230. return true;
  231. }
  232. return false;
  233. }
  234. function insertTable($date, $value, $b, $count)
  235. {
  236. if ($date[$b] != "") {
  237. $str = "'" . $date[$b] . "', ";
  238. for ($i = 0; $i <= $count; $i++) {
  239. if($value[$i][$b] == null){
  240. $str .= "null";
  241. }
  242. $str .= $value[$i][$b];
  243. if ($i != $count) {
  244. $str .= ", ";
  245. }
  246. }
  247. return $str;
  248. }
  249. }
  250. function insertTableSIDSIS($value, $count)
  251. {
  252. $str = "";
  253. for ($i = 0; $i < count($value[$count]); $i++) {
  254. $str .= $value[$count][$i];
  255. if ($i != count($value[$count]) - 1) {
  256. $str .= ", ";
  257. }
  258. }
  259. return $str;
  260. }
  261. function getColumnName($value, $count)
  262. {
  263. $str = "depth_0, ";
  264. for ($i = 0; $i < count($value[$count]) - 1; $i++) {
  265. $str .= "depth_" . ($i + 1);
  266. if ($i != count($value[$count]) - 2) {
  267. $str .= ", ";
  268. }
  269. }
  270. return $str;
  271. }
  272. //header("Location: ../../index.php");
  273. ?>