Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] cennik offline
Forum PHP.pl > Forum > PHP
herbatniczek
cześć

mam $wynik - zmienną z tablicą asoscjacyjną części i ich cen i wyświetlam to na witrynie, a przymierzam się teraz do wykorzystania zmiennej $wynik do stworzenia cennika offline. Czy macie z tym jakieś doświadczenia? Jak łatwiej zrobić - w sklepacch występują cenniki do ściągnięcia w wesji pdf lub excel, ja byłbym za wersją excelową, żeby użytkownik mógł sobie potem poprzeliczać swoje przemyślenia w arkuszu.

macie jakieś kawałki kodu, linki do tego jak to się robi?
Kocurro
polecam poszukać na forum - o ppdfie było, o excelu takze - jest jakaś klasa to obsługująca - działą całkiem przyzwoicie.

Ja w takich sytuacjach pozwalam klientowi pobrać archiwum zip zawierajace grafikę oraz pliki html cennika naspzikowanego javascriptem.
SongoQ
Odnosnie pdfow to polecam gotowa classe FPDF fpdf.org
bendi
Cytat(herbatniczek @ 2005-02-17 14:46:03)
ja byłbym za wersją excelową, żeby użytkownik mógł sobie potem poprzeliczać swoje przemyślenia w arkuszu.

macie jakieś kawałki kodu, linki do tego jak to się robi?

mowisz i masz
demo
klasa
ta sama klasa w pearze

Co do dema to trzeba wybrac jakies elementy z kalkulatora, nacisnac przycisk "pobierz xls" i sprawa zalatwiona.

[edit] Costam sie sypalo ale juz poprawilem winksmiley.jpg [/edit]
herbatniczek
czesc,
mam dwie wersje.
pierwsza: - ta wersja generuje błąd Warning: Cannot modify header information - headers already sent by (output started at c:\usr\krasnal\www\sklep\php_funkcje.inc:139) in c:\usr\krasnal\www\sklep\write\cennik.php on line 84

ob_start(); powoduje generowanie krzaczków w pliku excelowym

Kod
   require_once('../katalog_funkcje.inc');
   require_once('../koszyk_funkcje.inc');    
  require_once('../php_funkcje.inc');  
    require_once('OLEwriter.php');  
  require_once('BIFFwriter.php');
  require_once('Worksheet.php');
  require_once('Workbook.php');

//$drzewo=pobierz_drzewo() ;
  
     $drzewo=new wezel_drzewa_kat(0,'','',1,-1,$rozwin,$_SESSION['rozwiniety'],null);    //nie potrebuje dwoch ost param

     $wezel=0;  
     $drzewo->szukaj_kat(2,0);
      
      //sprawdz czy zero, bo sa rozne formy przedstawiania danych
    $lista_podk_kategoria_ID=array(); // tu znajdują się kategoria_ID aktualnej i wszystkich podrzędnych kategorii

    $wezel->kateg_w_dol();
    
    $lista_produktow=pobierz_cennik($lista_podk_kategoria_ID);//,$sort);


  function HeaderingExcel($filename) {
      header("Content-type: application/vnd.ms-excel");
      header("Content-Disposition: attachment; filename=$filename" );
      header("Expires: 0");
      header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
      header("Pragma: public");
      }

    
      
    //wyswietl_liste($lista_produktow);
    
      HeaderingExcel('test.xls');

  // Creating a workbook
  $workbook = new Workbook("-");
  // Creating the first worksheet
  $worksheet1 =& $workbook->add_worksheet('Cennik');
  $worksheet1->set_column(1, 1, 40);
  $worksheet1->set_row(1, 20);
  $worksheet1->write_string(1, 1, "This worksheet's name is ".$worksheet1->get_name());
  $worksheet1->write(2,1,"http://www.phpclasses.org/browse.html/package/767.html");
  $worksheet1->write_number(3, 0, 11);
  $worksheet1->write_number(3, 1, 1);
  $worksheet1->write_string(3, 2, "by four is");
  $worksheet1->write_formula(3, 3, "=A4 * (2 + 2)");
  //$worksheet1->write_formula(3, 3, "= SUM(A4:B4)");
  $worksheet1->write(5, 4, "= POWER(2,3)");
  $worksheet1->write(4, 4, "= SUM(5, 5, 5)");
  //$worksheet1->write_formula(4, 4, "= LN(2.71428)");
  //$worksheet1->write_formula(5, 4, "= SIN(PI()/2)");

  // Creating the second worksheet
  $worksheet2 =& $workbook->add_worksheet();

  // Format for the headings
  $formatot =& $workbook->add_format();
  $formatot->set_size(10);
  $formatot->set_align('center');
  $formatot->set_color('white');
  $formatot->set_pattern();
  $formatot->set_fg_color('black');

  $worksheet2->set_column(0,0,15);
  $worksheet2->set_column(1,2,30);
  $worksheet2->set_column(3,3,15);
  $worksheet2->set_column(4,4,10);

  $worksheet2->write_string(1,0,"Nazwa",$formatot);
  $worksheet2->write_string(1,1,"Cena netto",$formatot);
  $worksheet2->write_string(1,2,"Cena brutto",$formatot);
  //$worksheet2->write_string(1,3,"Phone Number",$formatot);
// $worksheet2->write_string(1,4,"Salary",$formatot);

  $worksheet2->write(3,0,"22222222-2");
  $worksheet2->write(3,1,"John Smith");
  $worksheet2->write(3,2,"Main Street 100");
  $worksheet2->write(3,3,"02-5551234");
  $worksheet2->write(3,4,100);
  $worksheet2->write(4,0,"11111111-1");
  $worksheet2->write(4,1,"Juan Perez");
  $worksheet2->write(4,2,"Los Paltos 200");
  $worksheet2->write(4,3,"03-5552345");
  $worksheet2->write(4,4,110);
  // if you are writing a very long worksheet, you may want to use
  // write_xxx() functions, instead of write() for performance reasons.
  $worksheet2->write_string(5,0,"11111111-1");
  $worksheet2->write_string(5,1,"Another Guy");
  $worksheet2->write_string(5,2,"Somewhere 300");
  $worksheet2->write_string(5,3,"03-5553456");
  $worksheet2->write(5,4,108);


  // Calculate some statistics
  $worksheet2->write(7, 0, "Average Salary:");
  $worksheet2->write_formula(7, 4, "= AVERAGE(E4:E6)");
  $worksheet2->write(8, 0, "Minimum Salary:");
  $worksheet2->write_formula(8, 4, "= MIN(E4:E6)");
  $worksheet2->write(9, 0, "Maximum Salary:");
  $worksheet2->write_formula(9, 4, "= MAX(E4:E6)");

  //$worksheet2->insert_bitmap(0, 0, "some.bmp",10,10);

  $workbook->close();



druga wersja:
cennik już działa pięknie, generują się trzy kolumny i dane w pliku xls. mam pytanie
-jak przed wszyestkim dodać tekst z nazwą firmy, dużą czcionką
- jak zmienić tło komórki wrzucając kolejne dane do $line .= $value;, np żeby drugi wiersz w $line był szary ( to mi będzie później potrzebne do tytułowania poszczegolnych działów - monitory, drukari itp.)
- jak ustawić szerokość komórki Nazwa i innych?
- jak ustawić autofiltr na tytuły kolumn np nazwa?


Kod:
Kod
ob_start();
require_once('../php_funkcje.inc');
require_once('../katalog_funkcje.inc');
require_once('../koszyk_funkcje.inc');
lacz_bd();

       $drzewo=new wezel_drzewa_kat(0,'','',1,-1,$rozwin,$_SESSION['rozwiniety'],null);    //nie potrebuje dwoch ost param
 
       $wezel=0;  
    $drzewo->szukaj_kat(2,0);
     
     //sprawdz czy zero, bo sa rozne formy przedstawiania danych
   $lista_podk_kategoria_ID=array(); // tu znajdują się kategoria_ID aktualnej i wszystkich podrzędnych kategorii

   $wezel->kateg_w_dol();
   
   $cennik=pobierz_cennik($lista_podk_kategoria_ID);//,$sort);
     
      $header = 'Nazwa '."\t".'Cena netto'."\t".'Cena brutto';
   
   $i=0;
   
      foreach ($cennik as $rzad){
   
       $line = '';
 
       $value=$cennik[$i]['produkt_nazwa'];
       $value = '"' . $value . '"' . "\t";
       $line .= $value;
       $value=$cennik[$i]['produkt_cena'];
       $value = '"' . $value . '"' . "\t";
       $line .= $value;
       
       $value=$cennik[$i]['cena_brutto'];
       $value = '"' . $value . '"' . "\t";
       $line .= $value;
       $data .= trim($line)."\n";
       $i=$i+1;
       
   }
   $data = str_replace("\r","",$data);

   if ($data == "")
   {
       $data = "\n(0) Nie znaleziono rekordów!\n";
   }
 
     header("Content-type: application/octet-stream");
   header("Content-Disposition: attachment; filename=CENNIK.xls");
   header("Pragma: no-cache");
   header("Expires: 0");
   echo "$header\n$data";
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.