Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Export do Excela
Forum PHP.pl > Forum > Przedszkole
nighttrain
Witam !

Chciałbym, aby na mojej intranetowej stronie był możliwy export wybranych tabel do pliku Excell. Chciałbym, aby była możliwość wyboru kolumn z danej tabeli jakie mają zostać wyeksportowane do pliku Excel np za pomocą CheckBoxów.
Moja tabelka MySQL o nazwie: "oprogramowanie" posiada 3 kolumny: "id_programu", "nazwa_programu", "system_operacyjny".
Próbowałem zrobić to w ten sposób, ale to chyba nie tędy droga, proszę o pomoc.
Chciałbym też w miare możliwości mieć wybór do możliwości podania, gdzie zapisać plik/
  1. <?php if (!$HTTP_GET_VARS['submit']) { ?>
  2. $msql = mysql_connect('localhost', 'root', 'qazwsx');
  3. mysql_select_db('komputery');
  4. mysql_query("SET NAMES 'utf8'");
  5. <?php
  6. echo "Export i zapis tabeli oprogramowania i wybranych tabel";
  7. echo '<form action="" method="post">';
  8. echo '<input type="submit" value="Export" name="submit"></form>';
  9. ?>
  10. <?php
  11. }
  12. else
  13. {
  14. $contents="id,nazwa programu,system operacyjny\n";
  15. $user_query = mysql_query('select id_programu , nazwa_programu, system_operacyjny from oprogramowanie');
  16. while($row = mysql_fetch_array($user_query))
  17. {
  18. $contents.=$row[id_programu].",";
  19. $contents.=$row[nazwa_programu].",";
  20. $answer = str_replace(',', '\,', $row[system_operacyjny]); // escape internalt commas
  21. $contents.=$answer."\n";
  22. }
  23. $contents = strip_tags($contents); // remove html and php tags etc.
  24. Header("Content-Disposition: attachment; filename=export.xslx");
  25. print $contents;
  26. ?>

pozdrawiam
CuteOne
1. Poczytaj w google jak pisać formularze [najlepiej z method="post"]
2. Poszukaj jak odbierać dane przesłane z formularzy
3. Naucz się operować na wyrażeniach logicznych [przydadzą się do sprawdzania, który checkbox zaznaczył użytkownik]
4. Gdy pojmiesz powyższe punkty manual->fopen/fwrite
nighttrain
Odświeżę troszkę temat ponieważ próbuję skorzystać z pewnej biblioteki opisanej tutaj: http://chumby.net/?p=29 robię wszystko jak napisane i 'dupa' po odpaleniu moje pliku php o nazwie: excel.php otrzymuję białą stronę i tyle... Dosłownie przekopiowałem tamten kod.

W tym samym katalogu mam więc plik o nazwie Excel.php:
Kod
<?php
<require_once "ExcelExport.php";

$xls = new ExcelExport();

$xls->addRow(Array("First Name","Last Name","Website","ID"));
$xls->addRow(Array("james","lin","www.chumby.net",0));
$xls->addRow(Array("bhaven","mistry","www.mygumballs.com",1));
$xls->addRow(Array("erica","truex","www.wholegrainfilms.com",2));

$xls->addRow(Array("eliot","gann","www.dissolvedfish.com",3));
$xls->addRow(Array("trevor","powell","gradius.classicgaming.gamespy.
com",4));
$xls->download("websites.xls");
?>


oraz ExcelExport.php:
Kod
<?php
class ExcelExport {
   var $file;
   var $row;

   function ExcelExport() {
      $this->file = $this->__BOF();
      $row = 0;
   }

   function __BOF() {
       return pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
   }

   function __EOF() {
       return pack("ss", 0x0A, 0x00);
   }

   function __writeNum($row, $col, $value) {
       $this->file .= pack("sssss", 0x203, 14, $row, $col, 0x0);
       $this->file .= pack("d", $value);
   }

   function __writeString($row, $col, $value ) {
       $L = strlen($value);
       $this->file .= pack("ssssss", 0x204, 8 + $L, $row, $col, 0x0, $L);
       $this->file .= $value;
   }
  
   function writeCell($value,$row,$col) {
      if(is_numeric($value)) {
         $this->__writeNum($row,$col,$value);
      }elseif(is_string($value)) {
         $this->__writeString($row,$col,$value);
      }
   }
  
   function addRow($data,$row=null) {
      //If the user doesn't specify a row, use the internal counter.
      if(!isset($row)) {
         $row = $this->row;
         $this->row++;
      }
      for($i = 0; $i<count($data); $i++) {
         $cell = $data[$i];
         $this->writeCell($cell,$row,$i);
      }
   }

   function download($filename) {
      header("Pragma: public");
      header("Expires: 0");
      header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
      header("Content-Type: application/force-download");
      header("Content-Type: application/octet-stream");
      header("Content-Type: application/download");;
      header("Content-Disposition: attachment;filename=$filename ");
      header("Content-Transfer-Encoding: binary ");
      $this->write();
   }
  
   function write() {
      echo $file = $this->file.$this->__EOF();
   }
}

Powiedzcie czemu to może nie działaś?
pozdrawiam
toel
  1. <require_once


tak na wstępie to pewnie Ci wywala błąd przy require bo Ci się wcisnął ostry nawias niepotrzebnie
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.