PHPKurz PHP (26.) |
|
┌vodem | Kurz PHP | Odkazy | Aplikace | Otßzky a odpov∞di |
|
Generovßnφ XLS dokument∙DneÜnφm dφlem navß₧eme na dφl, kde jsme generovali PDF dokumenty. Ukß₧eme si, jak generovat plnohodnotnΘ XLS dokumenty p°φmo z PHP. Na Internetu nalezneme spousty knihoven, kterΘ umo₧≥ujφ generovßnφ XLS dokument∙, ale vÜechny kvalitn∞jÜφ jsou placenΘ. My si v dneÜnφm dφle ukß₧eme, jak generovat XLS dokumenty pomocφ knihovny Spreadsheet_Excel_Writer (http://pear.php.net/package/Spreadsheet_Excel_Writer). Tento nßstroj (soubor t°φd) vychßzφ z p∙vodnφ PerlovΘ varianty t°φdy Spreadsheet::WriteExcel. My si nynφ ukß₧eme prßci s touto knihovnou. ZaΦφnßmeJeliko₧ se jednß o knihovnu, jen₧ je souΦßstφ Pear frameworku (PHP Extension and Application Repository - distribuΦnφ systΘm pro PHP komponenty), museli bychom nainstalovat a nastavit cel² Pear. Pro naÜi prßci jsem vytvo°il jednoduch² balφk, kter² jenom rozbalφte a umφstφte do zvolenΘho adresß°e. Tento balφk je k dispozici ke sta₧enφ zde. Pokud by n∞kdo nerozum∞l struktu°e adresß°∙, m∙₧e si ji prohlΘdnout zde: + Ole + Pps + File.php + Root.php + OLE.php + PPS.php + Spreadsheet + Excel + Writer + BIFFwriter.php + Format.php + Parser.php + Validator.php + Workbook.php + Worksheet.php + writer.php + PEAR.php + nas_skript.php P°ed vytvo°enφm instance hlavnφ t°φdy pro tvorbu XLS dokument∙ musφme urΦit pomocφ funkce "ini_set()" direktivu "include_path". Pokud tedy mßme umφst∞ny svΘ skripty v adresß°i "e:\netpub\www\xls", bude funkce ini_set vypadat nßsledovn∞: ini_set("include_path", 'E:\NETPUB\WWW\xls'); Potom musφme do naÜeho skriptu vlo₧it soubor "Writer.php" pro prßci s t°φdou. Hlavnφ Φßst skriptu by tedy m∞la vypadat nßsledovn∞: <?php // Nastavφme direktivu include_path. ini_set("include_path", 'E:\NETPUB\WWW\xls'); // Chceme vlo₧it zvolenΘ soubory pouze jedenkrßt. require_once "Spreadsheet\Excel\Writer.php"; Nynφ ji₧ m∙₧eme vytvo°it instanci t°φdy Spreadsheet_Excel_Writer, se kterou budeme pracovat p°i tvorb∞ XLS dokument∙. Jak si m∙₧eme vÜimnout, tak konstruktor p°ebφrß cestu k souboru, kter² bude nßsledn∞ vygenerovßn. // JmΘno a cesta k souboru, kter² budeme vytvß°et. $soubor = "e:\\tmp\\soubor.xls"; // Vytvo°enφ instance t°φdy. $workbook = new Spreadsheet_Excel_Writer($soubor); Po ·sp∞ÜnΘm vytvo°enφ instance t°φdy m∙₧eme vytvo°it nov² list pomocφ metody addWorksheet. // P°idßnφ novΘho listu do dokumentu. $worksheet =& $workbook->addWorksheet("Nov² list dokumentu"); Jak si m∙₧eme vÜimnout, tak u₧φvßme znaku & p°ed p°i°azenφm prom∞nnΘ. To znamenß, ₧e se odkazujeme na zvolen² objekt mφsto toho, abychom ho kopφrovali. V praxi to znamenß, ₧e jej pou₧ijeme p°i ka₧dΘm volßnφ metody addWorksheet() a addFormat(). Kdy₧ mßme nynφ vytvo°en nov² list v dokumentu, m∙₧eme do n∞j zapsat text pomocφ metody: write( $radek, $sloupec, $text [, $format=0] ) Vybere sprßvnou metodu pro zßpis a zapφÜe zvolen² text (Φφslo apod.) do zvolenΘho sloupce a °ßdku. // Zapsßnφ do listu. $worksheet->write(0, 0, "JmΘno"); $worksheet->write(0, 1, "P°φjmenφ"); $worksheet->write(1, 0, "Josef"); $worksheet->write(1, 1, "Novßk"); Na zßv∞r musφme dokument uzav°φt pomocφ metody close(). // Uzav°enφ dokumentu. $workbook->close(); Cel² nßÜ nov² skript pro generovßnφ XLS dokument∙ vypadß nßsledovn∞: <?php ini_set("include_path", 'E:\NETPUB\WWW\xls'); // Chceme vlo₧it zvolenΘ soubory pouze jedenkrßt. require_once "Spreadsheet\Excel\Writer.php"; // JmΘno a cesta k souboru, kter² budeme vytvß°et. $soubor = "e:\\tmp\\soubor.xls"; // Vytvo°enφ instance t°φdy. $workbook = new Spreadsheet_Excel_Writer($soubor); // P°idßnφ novΘho listu do dokumentu. $worksheet =& $workbook->addWorksheet("Nov² list dokumentu"); // Zapsßnφ do listu. $worksheet->write(0, 0, "JmΘno"); $worksheet->write(0, 1, "P°φjmenφ"); $worksheet->write(1, 0, "Josef"); $worksheet->write(1, 1, "Novßk"); // Uzav°enφ dokumentu. $workbook->close(); ?> NßÜ soubor se nßm vygeneroval do nßmi zadanΘho adresß°e e:\tmp\, kde si jej m∙₧eme prohlΘdnout. Zvolen² adresß° musφ mφt nastaveny prßva zßpisu! Pokud budeme chtφt, aby se nßm v²sledn² soubor odeslal do prohlφ₧eΦe ke sta₧enφ, vyu₧ijeme metody send(), kterou zavolßme po vytvo°enφ instance t°φdy. <?php ini_set("include_path", 'E:\NETPUB\WWW\xls'); // Chceme vlo₧it zvolenΘ soubory pouze jedenkrßt. require_once "Spreadsheet\Excel\Writer.php"; // Vytvo°enφ instance t°φdy. $workbook = new Spreadsheet_Excel_Writer(); $workbook->send("soubor.xls"); // P°idßnφ novΘho listu do dokumentu. $worksheet =& $workbook->addWorksheet("Nov² list dokumentu"); // Zapsßnφ do listu. $worksheet->write(0, 0, "JmΘno"); $worksheet->write(0, 1, "P°φjmenφ"); $worksheet->write(1, 0, "Josef"); $worksheet->write(1, 1, "Novßk"); // Uzav°enφ dokumentu. $workbook->close(); ?> Formßtovßnφ dokumentuK Φemu by nßm bylo vytvß°enφ nov²ch dokument∙ a list∙, kdybychom nemohli formßtovat vzhled bun∞k a pφsma. Nov² formßt vytvo°φme pomocφ metody addFormat() hlavnφ t°φdy. // Vytvo°φme nov² formßt. $tucnepismo =& $workbook->addFormat(); // Nastavφme pφsmo jako tuΦnΘ. $tucnepismo->setBold(); Nynφ si ukß₧eme jednotlivΘ metody, kterΘ m∙₧eme vyu₧φt p°i tvorb∞ novΘho vzhledu. setAling( $zarovnani ) Zarovnß obsah zvolenΘ bu≥ky podle zadanΘho kritΘria. Jako parametr $zarovnani m∙₧eme dosadit:
P°φklad: $mojepismo =& $workbook->addFormat(); $mojepismo->setAlign("center"); setMerge() SlouΦφ zvolenΘ bu≥ky s dan²m formßtem dohromady. Tato metoda je aliasem metody setAlign('merge'). P°φklad: $mojepismo =& $workbook->addFormat(); $mojepismo->setMerge(); setBold( [$sirka=1] ) Nastavφ zvolen² text jako tuΦn². Jako parametr $sirka m∙₧eme dosadit 0 pro normßlnφ text a 700 pro tuΦn² text. P°φklad: $mojepismo =& $workbook->addFormat(); $mojepismo->setBold(); setBottom( $styl ) Nastavφ dolnφ ohraniΦenφ bu≥ky. Jako parametr $styl m∙₧eme dosadit 1 pro tenkΘ ohraniΦenφ a 2 pro tlustΘ ohraniΦenφ. P°φklad: $mojepismo =& $workbook->addFormat(); $mojepismo->setBottom(1); setTop( $styl ) Nastavφ hornφ ohraniΦenφ bu≥ky. Jako parametr $styl m∙₧eme dosadit 1 pro tenkΘ ohraniΦenφ a 2 pro tlustΘ ohraniΦenφ. P°φklad: $mojepismo =& $workbook->addFormat(); $mojepismo->setTop(2); setLeft( $styl ) Nastavφ levΘ ohraniΦenφ bu≥ky. Jako parametr $styl m∙₧eme dosadit 1 pro tenkΘ ohraniΦenφ a 2 pro tlustΘ ohraniΦenφ. P°φklad: $mojepismo =& $workbook->addFormat(); $mojepismo->setLeft(2); setRight( $styl ) Nastavφ pravΘ ohraniΦenφ bu≥ky. Jako parametr $styl m∙₧eme dosadit 1 pro tenkΘ ohraniΦenφ a 2 pro tlustΘ ohraniΦenφ. P°φklad: $mojepismo =& $workbook->addFormat(); $mojepismo->setRight(2); setBorder( $styl ) Nastavφ ohraniΦenφ celΘ bu≥ky. Jako parametr $styl m∙₧eme dosadit 1 pro tenkΘ ohraniΦenφ a 2 pro tlustΘ ohraniΦenφ. P°φklad: $mojepismo =& $workbook->addFormat(); $mojepismo->setBorder(2); setBorderColor( $barva ) Nastavφ barvu ohraniΦenφ bu≥ky. Jako parametr $barva m∙₧eme dosadit nßzev barvy (red, blue, atd.) nebo jejφ Φφslo (8 - 63). P°φklad: $mojepismo =& $workbook->addFormat(); $mojepismo->setBorderColor("blue"); setBottomColor( $barva ) Nastavφ barvu ohraniΦenφ spodnφ Φßsti bu≥ky. Jako parametr $barva m∙₧eme dosadit nßzev barvy (red, blue, atd.) nebo jejφ Φφslo (8 - 63). Obdobou jsou i metody setTopColor, setLeftColor, setRightColor. P°φklad: $mojepismo =& $workbook->addFormat(); $mojepismo->setBorderColor("blue"); setColor( $barva ) Nastavφ barvu bu≥ky. Jako parametr $barva m∙₧eme dosadit nßzev barvy (red, blue, atd.) nebo jejφ Φφslo (8 - 63). P°φklad: $mojepismo =& $workbook->addFormat(); $mojepismo->setColor("blue"); setPattern( $cislo ) Umo₧≥uje nastavit styl v²pln∞ bu≥ky. Jako parametr m∙₧eme dosadit Φφslo stylu bu≥ky od 0 - 18 (0 = ₧ßdnß v²pl≥). P°φklad: $mojepismo =& $workbook->addFormat(); $mojepismo->setPattern(15); setUnderline( $cislo ) Umo₧≥uje nastavit podtr₧enφ textu. Jako parametr m∙₧eme dosadit Φφslo 1 pro jednoduchΘ podtr₧enφ a 2 pro dvojitΘ podtr₧enφ. P°φklad: $mojepismo =& $workbook->addFormat(); $mojepismo->setUnderline(2); setItalic() Umo₧≥uje nastavit kurzφvu textu. P°φklad: $mojepismo =& $workbook->addFormat(); $mojepismo->setItalic(); setSize( $velikost ) Umo₧≥uje nastavit velikost textu v bu≥ce. Jako parametr $velikost m∙₧eme dosadit velikost pφsma. P°φklad: $mojepismo =& $workbook->addFormat(); $mojepismo->setSize(20); setTextWrap() Umo₧≥uje nastavit zalamovßnφ textu v bu≥ce. P°φklad: $mojepismo =& $workbook->addFormat(); $mojepismo->setTextWrap(); setTextRotation( $stupne ) Umo₧≥uje ·hel umφst∞nφ textu v bu≥ce. Jako parametr m∙₧eme dosadit velikosti ·hl∙: 0, 90, 270 a -1. P°φklad: $mojepismo =& $workbook->addFormat(); $mojepismo->setTextRotation(270); setNumFormat( $format ) Umo₧≥uje nastavit formßt textu v bu≥ce (Φas, datum, apod.). Jako parametr m∙₧eme dosadit n∞kter² z formßtu uveden²ch na http://sc.openoffice.org/excelfileformat.pdf (nap°φklad: "D-MMM-YYYY", ...). P°φklad: $mojepismo =& $workbook->addFormat(); $mojepismo->setNumFormat("D-MMM-YYYY"); setStrikeOut() Umo₧≥uje nastavit text v bu≥ce na p°eÜkrtnut². P°φklad: $mojepismo =& $workbook->addFormat(); $mojepismo->setStrikeOut(); setScript( $index ) Umo₧≥uje nastavit text v bu≥ce jako hornφ nebo dolnφ index. Dosadit m∙₧eme 1 pro hornφ index a 2 pro dolnφ index. P°φklad: $mojepismo =& $workbook->addFormat(); $mojepismo->setScript(1); setFontFamily( $font ) Umo₧≥uje druh pφsma textu v bu≥ce. Dosadit m∙₧eme nap°φklad: "Times New Roman", "Courier", "Arial", atd. P°φklad: $mojepismo =& $workbook->addFormat(); $mojepismo->setFontFamily("Courier"); Pro tento dφl to bude vÜe. V p°φÜtφm dφle budeme dßle pokraΦovat v prßci s generovßnφm XLS dokument∙.
|
|