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";