Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP][PHPExcel] Pobieranie danych w pętli z MySQL, PHPExcel
Barcelona
post
Post #1





Grupa: Zarejestrowani
Postów: 322
Pomógł: 15
Dołączył: 29.01.2010

Ostrzeżenie: (0%)
-----


Witam, tematyka niby prosta, jednak nie wiem jak się za nią zabrać. Dopiero raczkuje z systemem PHPExcel, ale wydaje się dość ciekawie i przyjaźnie napisany.
Dopiero dzisiaj przysiadłem do tej klasy i mniej więcej zorientowałem się jak tworzyć arkusze oraz w jaki sposób wprowadzić dane. Jednak mam teraz problem, ponieważ chciałbym w pętli pobrać dane do tego arkusza.

Otóż aktualnie mój arkusz wygląda tak:

  1. include 'Classes/PHPExcel.php';
  2. include 'Classes/PHPExcel/Writer/Excel5.php';
  3. $PHPExcel = new PHPExcel();
  4. $PHPExcel->getActiveSheet()->getStyle('A1:A4')->getFill()
  5. ->setFillType(PHPExcel_Style_Fill::FILL_SOLID)
  6. ->getStartColor()->setRGB('00FF00');
  7. $PHPExcel->getActiveSheet()->setCellValue('A1', 'Zestawienie produkcyjne z dnia: '.$data.'');
  8. $PHPExcel->getActiveSheet()->getColumnDimension('A')-> setAutoSize(true);
  9. $PHPExcel->getActiveSheet()->getStyle('A1:A2')->getFont()->setBold(true);
  10. $PHPExcel->getActiveSheet()->setCellValue('A2', 'Arkusz wygenerował: '.$creator.'');
  11.  
  12. $PHPExcel->getActiveSheet()->getStyle('B1:F1')->getFill()
  13. ->setFillType(PHPExcel_Style_Fill::FILL_SOLID)
  14. ->getStartColor()->setRGB('FFC000');
  15. $PHPExcel->getActiveSheet()->getColumnDimension('B')-> setAutoSize(true);
  16. $PHPExcel->getActiveSheet()->getColumnDimension('C')-> setAutoSize(true);
  17. $PHPExcel->getActiveSheet()->getColumnDimension('D')-> setAutoSize(true);
  18. $PHPExcel->getActiveSheet()->getColumnDimension('E')-> setAutoSize(true);
  19. $PHPExcel->getActiveSheet()->getColumnDimension('F')-> setAutoSize(true);
  20. $PHPExcel->getActiveSheet()->setCellValue('B1', 'Maszyna');
  21. $PHPExcel->getActiveSheet()->setCellValue('C1', 'Numer Pojemnika');
  22. $PHPExcel->getActiveSheet()->setCellValue('D1', 'Ilość');
  23. $PHPExcel->getActiveSheet()->setCellValue('E1', 'Waga');
  24. $PHPExcel->getActiveSheet()->setCellValue('F1', 'Pracownik');


Oczywiście zamieściłem środek, bez zbędnych linijek. Jak widzicie od komórki B1 do F1 utworzyłem nagłówki "tabelki" i teraz chciałbym poniżej wrzucać dane z bazy. Intuicja mi podpowiada że jest to banalne, jednak dzisiaj umysł płata mi figle. Wolałem zaczerpnąć informacji u was.
Go to the top of the page
+Quote Post
tolomei
post
Post #2





Grupa: Zarejestrowani
Postów: 450
Pomógł: 135
Dołączył: 18.11.2010
Skąd: Wschowa

Ostrzeżenie: (0%)
-----


Witaj.

  1. include 'Classes/PHPExcel.php';
  2. include 'Classes/PHPExcel/Writer/Excel5.php';
  3. $PHPExcel = new PHPExcel();
  4. $PHPExcel->getActiveSheet()->getStyle('A1:A4')->getFill()
  5. ->setFillType(PHPExcel_Style_Fill::FILL_SOLID)
  6. ->getStartColor()->setRGB('00FF00');
  7. $PHPExcel->getActiveSheet()->setCellValue('A1', 'Zestawienie produkcyjne z dnia: '.$data.'');
  8. $PHPExcel->getActiveSheet()->getColumnDimension('A')-> setAutoSize(true);
  9. $PHPExcel->getActiveSheet()->getStyle('A1:A2')->getFont()->setBold(true);
  10. $PHPExcel->getActiveSheet()->setCellValue('A2', 'Arkusz wygenerował: '.$creator.'');
  11.  
  12. $PHPExcel->getActiveSheet()->getStyle('B1:F1')->getFill()
  13. ->setFillType(PHPExcel_Style_Fill::FILL_SOLID)
  14. ->getStartColor()->setRGB('FFC000');
  15. $PHPExcel->getActiveSheet()->getColumnDimension('B')-> setAutoSize(true);
  16. $PHPExcel->getActiveSheet()->getColumnDimension('C')-> setAutoSize(true);
  17. $PHPExcel->getActiveSheet()->getColumnDimension('D')-> setAutoSize(true);
  18. $PHPExcel->getActiveSheet()->getColumnDimension('E')-> setAutoSize(true);
  19. $PHPExcel->getActiveSheet()->getColumnDimension('F')-> setAutoSize(true);
  20. $PHPExcel->getActiveSheet()->setCellValue('B1', 'Maszyna');
  21. $PHPExcel->getActiveSheet()->setCellValue('C1', 'Numer Pojemnika');
  22. $PHPExcel->getActiveSheet()->setCellValue('D1', 'Ilość');
  23. $PHPExcel->getActiveSheet()->setCellValue('E1', 'Waga');
  24. $PHPExcel->getActiveSheet()->setCellValue('F1', 'Pracownik');
  25. $sql = "SELECT * FROM tabela";
  26. $q = mysql_query($sql);
  27. $licznik = 2;
  28. while($row = mysql_fetch_array($q)) {
  29. $PHPExcel->getActiveSheet()->setCellValue('B'.$licznik, $row['kolumna1']);
  30. $PHPExcel->getActiveSheet()->setCellValue('C'.$licznik, $row['kolumna2']);
  31. $PHPExcel->getActiveSheet()->setCellValue('D'.$licznik, $row['kolumna3']);
  32. $PHPExcel->getActiveSheet()->setCellValue('E'.$licznik, $row['kolumna4']);
  33. $PHPExcel->getActiveSheet()->setCellValue('F'.$licznik, $row['kolumna5']);
  34. $licznik++;
  35. }


Celowo pominąłem obsługę błędów dla uproszczenia skryptu.
To nie jest jedyny sposób na realizację tego zadania.

Pozdrawiam.

Ten post edytował tolomei 26.04.2012, 19:17:21


--------------------
“ Computers are good at following instructions, but not at reading your mind. ”
- Donald Knuth
Go to the top of the page
+Quote Post
Barcelona
post
Post #3





Grupa: Zarejestrowani
Postów: 322
Pomógł: 15
Dołączył: 29.01.2010

Ostrzeżenie: (0%)
-----


Tak, ale to wypisze całą zawartość tabeli w komórce od B2 do F2. Mi konkretnie chodzi żeby wypisało z podziałem na komórki.

Nie zauważyłem $licznik++; a więc zwracam honor. Jednak i tak twierdze że nie jest to dobry sposób. Ponieważ jeżeli będę chciał w ostatniej komórce zrobić sume ilości to muszę wiedzieć konkretny numer komórki. $licznik podbija cały czas o jeden i tak naprawde nie wiadomo ile będzie tych podbić.
Go to the top of the page
+Quote Post
tolomei
post
Post #4





Grupa: Zarejestrowani
Postów: 450
Pomógł: 135
Dołączył: 18.11.2010
Skąd: Wschowa

Ostrzeżenie: (0%)
-----


To użyj pętli for.

  1. include 'Classes/PHPExcel.php';
  2. include 'Classes/PHPExcel/Writer/Excel5.php';
  3. $PHPExcel = new PHPExcel();
  4. $PHPExcel->getActiveSheet()->getStyle('A1:A4')->getFill()
  5. ->setFillType(PHPExcel_Style_Fill::FILL_SOLID)
  6. ->getStartColor()->setRGB('00FF00');
  7. $PHPExcel->getActiveSheet()->setCellValue('A1', 'Zestawienie produkcyjne z dnia: '.$data.'');
  8. $PHPExcel->getActiveSheet()->getColumnDimension('A')-> setAutoSize(true);
  9. $PHPExcel->getActiveSheet()->getStyle('A1:A2')->getFont()->setBold(true);
  10. $PHPExcel->getActiveSheet()->setCellValue('A2', 'Arkusz wygenerował: '.$creator.'');
  11.  
  12. $PHPExcel->getActiveSheet()->getStyle('B1:F1')->getFill()
  13. ->setFillType(PHPExcel_Style_Fill::FILL_SOLID)
  14. ->getStartColor()->setRGB('FFC000');
  15. $PHPExcel->getActiveSheet()->getColumnDimension('B')-> setAutoSize(true);
  16. $PHPExcel->getActiveSheet()->getColumnDimension('C')-> setAutoSize(true);
  17. $PHPExcel->getActiveSheet()->getColumnDimension('D')-> setAutoSize(true);
  18. $PHPExcel->getActiveSheet()->getColumnDimension('E')-> setAutoSize(true);
  19. $PHPExcel->getActiveSheet()->getColumnDimension('F')-> setAutoSize(true);
  20. $PHPExcel->getActiveSheet()->setCellValue('B1', 'Maszyna');
  21. $PHPExcel->getActiveSheet()->setCellValue('C1', 'Numer Pojemnika');
  22. $PHPExcel->getActiveSheet()->setCellValue('D1', 'Ilość');
  23. $PHPExcel->getActiveSheet()->setCellValue('E1', 'Waga');
  24. $PHPExcel->getActiveSheet()->setCellValue('F1', 'Pracownik');
  25. $sql = "SELECT * FROM tabela";
  26. $q = mysql_query($sql);
  27. $ile = mysql_num_rows($q);
  28. $wiersz_start = 2;
  29. for($i = $wiersz_start; $i < $ile + $wiersz_start; $i++) {
  30. $row = mysql_fetch_array($q);
  31. $PHPExcel->getActiveSheet()->setCellValue('B'.$i, $row['kolumna1']);
  32. $PHPExcel->getActiveSheet()->setCellValue('C'.$, $row['kolumna2']);
  33. $PHPExcel->getActiveSheet()->setCellValue('D'.$i, $row['kolumna3']);
  34. $PHPExcel->getActiveSheet()->setCellValue('E'.$i, $row['kolumna4']);
  35. $PHPExcel->getActiveSheet()->setCellValue('F'.$i, $row['kolumna5']);
  36. }


Pozdro.

PS. Mówiłem że to nie było jedyne rozwiązanie.


--------------------
“ Computers are good at following instructions, but not at reading your mind. ”
- Donald Knuth
Go to the top of the page
+Quote Post
shadow1987
post
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 7.02.2012

Ostrzeżenie: (0%)
-----


Witam
Próbowałem przekształcić tego php excel pod siebie lecz wywala mi :

Parse error: parse error in xxxxxxxxx\exportexc2.php on line 6
Gdzie tu błąd ?
  1. <?
  2. require "css/login.php";
  3. include 'PHPExcel.php';
  4. include 'PHPExcel/Writer/Excel5.php';
  5. $PHPExcel = new PHPExcel();
  6. $PHPExcel->getActiveSheet()->getStyle('A1:A4')->getFill()
  7. ->setFillType(PHPExcel_Style_Fill::FILL_SOLID)
  8. ->getStartColor()->setRGB('00FF00');
  9. $PHPExcel->getActiveSheet()->setCellValue('A1', 'Zestawienie pojazdów z dnia: '.$data.'');
  10. $PHPExcel->getActiveSheet()->getColumnDimension('A')-> setAutoSize(true);
  11. $PHPExcel->getActiveSheet()->getStyle('A1:A2')->getFont()->setBold(true);
  12.  
  13.  
  14. $PHPExcel->getActiveSheet()->getStyle('B1:G1')->getFill()
  15. ->setFillType(PHPExcel_Style_Fill::FILL_SOLID)
  16. ->getStartColor()->setRGB('FFC000');
  17. $PHPExcel->getActiveSheet()->getColumnDimension('B')-> setAutoSize(true);
  18. $PHPExcel->getActiveSheet()->getColumnDimension('C')-> setAutoSize(true);
  19. $PHPExcel->getActiveSheet()->getColumnDimension('D')-> setAutoSize(true);
  20. $PHPExcel->getActiveSheet()->getColumnDimension('E')-> setAutoSize(true);
  21. $PHPExcel->getActiveSheet()->getColumnDimension('F')-> setAutoSize(true);
  22. $PHPExcel->getActiveSheet()->getColumnDimension('G')-> setAutoSize(true);
  23. $PHPExcel->getActiveSheet()->setCellValue('B1', 'Odzial');
  24. $PHPExcel->getActiveSheet()->setCellValue('C1', 'Nazwa');
  25. $PHPExcel->getActiveSheet()->setCellValue('D1', 'Marka Typ');
  26. $PHPExcel->getActiveSheet()->setCellValue('E1', 'Numer Rejestracyjny');
  27. $PHPExcel->getActiveSheet()->setCellValue('F1', 'Numer Umowy');
  28. $PHPExcel->getActiveSheet()->setCellValue('G1', 'Opis');
  29. connection();
  30.  
  31. $sql = "SELECT COUNT(*) , odzial , nazwa , Marka_typ , Nr_rej ,nr_umowy , opis FROM naprawy WHERE stan_pojazdu= 'Serwis' AND data_przyj_do_serw= CURDATE() GROUP BY odzial, nazwa, Marka_typ, Nr_rej, nr_umowy ,opis ";
  32. $q = mysql_query($sql) or die(mysql_error());
  33. $ile = mysql_num_rows($q);
  34. $wiersz_start = 2;
  35. for($i = $wiersz_start; $i < $ile + $wiersz_start; $i++) {
  36. $row = mysql_fetch_array($q);
  37. $PHPExcel->getActiveSheet()->setCellValue('B'.$i, $row['odzial']);
  38. $PHPExcel->getActiveSheet()->setCellValue('C'.$i, $row['nazwa']);
  39. $PHPExcel->getActiveSheet()->setCellValue('D'.$, $row['Marka_typ']);
  40. $PHPExcel->getActiveSheet()->setCellValue('E'.$i, $row['Nr_rej']);
  41. $PHPExcel->getActiveSheet()->setCellValue('F'.$i, $row['nr_umowy']);
  42. $PHPExcel->getActiveSheet()->setCellValue('G'.$i, $row['opis']);
  43. }
  44.  
  45. ?>


Ten post edytował shadow1987 16.05.2012, 09:59:46
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 10:24