Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] import excel
Forum PHP.pl > Forum > Przedszkole
ravikw
Mam poniższy kod który wyświetla mi zawartość plików excela...ale nie mam zielonego pojęcia jak go przerobić aby można było poszczególne komórki zaimportować do bazy mysql. Poproszę o jakąś sugestię



  1. <?
  2.  
  3. require_once 'Excel/reader.php';
  4. $xls = new Spreadsheet_Excel_Reader();
  5. $xls->setOutputEncoding('cp1250');
  6. $xls->read('prowizje/mix.xls');
  7. $xls->sheets[0];
  8. //liczba wierszy
  9. $xls->sheets[0]['numRows'];
  10. //liczba kolumn
  11. $xls->sheets[0]['numCols'];
  12. //komórki
  13. $xls->sheets[0]['cells'];
  14. //komórka o adresie [3;7]
  15. $xls->sheets[0]['cells'][3][7];
  16.  
  17. echo"<table cellSpacing=\"0\" borderColorDark=\"white\" cellPadding=\"1\" align=\"top\" background: \"#CCCCCC\"
  18. borderColorLight=\"#aaaaaa\" border=\"1\" > ";
  19. echo"<tr>";
  20.  
  21. for ($i = 1; $i <= $xls->sheets[0] ['numRows']; $i++)
  22. {
  23. for ($j = 1; $j <= $xls->sheets[0] ['numCols']; $j++) {
  24.  
  25. echo"<td>";
  26.  
  27.  
  28. echo $xls->sheets[0]['cells'][$i][$j] . ' ';
  29. echo"</td>";
  30.  
  31. }
  32. echo"</tr>";
  33. }
  34. echo "</table>";
  35. ?>
  36.  



Myślę że muszę się uporać jakoś z tym fragmentem:

  1. echo $xls->sheets[0]['cells'][$i][$j] . ' ';


tylko jak questionmark.gif?

darko
Wiesz, że arkusz jest zbudowany z wierszy i rzędów komórek, więc: jedziesz po każdym arkuszu i dla każdego rows pobierasz cols w pętli i dalej $rows++; Zresztą kod, który jeździ po komórkach dla pierwszego arkusza jest w liniach 21-34, teraz pomyśl jak to można zapisać do bazy.
ravikw
Udało mi się przerobić ten kod na coś takiego :

  1. <?
  2. include 'conf.php';
  3.  
  4. echo '<form enctype="multipart/form-data" method="post" action="excel_test.php">
  5. <input type="file" size="32" name="plik_upload" value="wwwwww">
  6. <input type="submit" name="Wy&para;lij" value="Wy&para;lij">
  7. </form>';
  8.  
  9.  
  10. if( isset($_FILES['plik_upload']) ) {
  11.  
  12. $f = $_FILES['plik_upload'];
  13. IF($f['type'] == 'application/ms-excel')
  14. {
  15. $x = getimagesize($f['tmp_name']);
  16. IF(!is_array($x) or $x[0] < 2)
  17. {
  18. die('Zły plik ');
  19. }
  20. $patch = str_replace('excel_test.php', '', $_SERVER['SCRIPT_FILENAME']);
  21. copy($f['tmp_name'], $patch.$f['name']);
  22. }
  23.  
  24.  
  25.  
  26. require_once 'Excel/reader.php';
  27. $xls = new Spreadsheet_Excel_Reader();
  28. $xls->setOutputEncoding('cp1250');
  29. $xls->read($f['tmp_name']);
  30. $xls->sheets[0];
  31. //liczba wierszy
  32. $xls->sheets[0]['numRows'];
  33. //liczba kolumn
  34. $xls->sheets[0]['numCols'];
  35. //komórki
  36. $xls->sheets[0]['cells'];
  37. //komórka o adresie [3;7]
  38. $xls->sheets[0]['cells'][3][7];
  39.  
  40. for ($i = 1; $i <= $xls->sheets[0]['numRows']; $i++) {
  41. //?questionmark.gif??for?questionmark.gif?excel?questionmark.gif
  42. /*
  43. for ($j = 1; $j <= $xls->sheets[0]['numCols']; $j++) {
  44. echo """.$xls->sheets[0]['cells'][$i][$j]."",";
  45. }
  46. echo "n";
  47. */
  48.  
  49. $sql = "INSERT INTO tel_mix VALUES('".
  50. $xls->sheets[0]['cells'][$i][1]."','".
  51. $xls->sheets[0]['cells'][$i][2]."','".
  52. $xls->sheets[0]['cells'][$i][3]."','".
  53. $xls->sheets[0]['cells'][$i][4]."','".
  54. $xls->sheets[0]['cells'][$i][5]."','".
  55. $xls->sheets[0]['cells'][$i][6]."','".
  56. $xls->sheets[0]['cells'][$i][7]."','".
  57. $xls->sheets[0]['cells'][$i][8]."','".
  58. $xls->sheets[0]['cells'][$i][9]."','".
  59. $xls->sheets[0]['cells'][$i][10]."')";
  60.  
  61. $rezultat = mysql_query($sql, $polacz) or die(mysql_error()); }
  62.  
  63.  
  64. if($rezultat) {
  65. echo "Dane wczytane !!!";
  66. }
  67. else{
  68. echo"Brak możliwo&para;ci wprowadzenia danych !!!";
  69.  
  70. }
  71.  
  72. }
  73. ?>


.....teraz się zastanawiam jak zrobić aby skrypt pomijał pierwszy wiersz w którym są nagłówki tabeli (pomijajac opcje edytowania pliku excela)questionmark.gif
darko
warunek if($i != 1) $sql = "INSERT ...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.