PHP - Kreiranje Excel datoteke - Pisanje v Excel datoteko - PHP - xls
Po pregledu branja Excel datoteke in nato konvertiranja Excel datoteke v .txt datoteko s pomočjo PHP-ja, si poglejmo še kreiranje oz. pisanje PHP podatkov v Excel datoteko. Sam za kreiranje Excel datotek uporabljam PEAR modul oz. paket, ki se imenuje Spreadsheet_Excel_Writer.
Stvar je zelo napredna saj pokriva veliko funkcionalnosti, poglejmo si nekaj primerov uporabe:
-
// New instance of excel writer
-
require_once "Spreadsheet/Excel/Writer.php";
-
$xls = new Spreadsheet_Excel_Writer('created_test.xls');
-
$xls->setVersion(8);
-
$sheet = & $xls->addWorksheet('test_worksheet');
-
$sheet->setInputEncoding('UTF-8');
-
-
//Append data
-
$sheet->writeString(0, 0, "Prvi stolpec");
-
$sheet->writeString(0, 1, "Drugi stolpec");
-
$sheet->writeString(0, 2, "Tretji stolpec");
-
$sheet->writeString(0, 3, "Četrti stolpec");
-
$sheet->writeString(0, 4, "Datum");
-
-
//Set column width (if you set width for one column, all next column will inherit this attribute)
-
$sheet->setColumn(0, 0, 9.14);
-
$sheet->setColumn(0, 1, 11.14);
-
$sheet->setColumn(0, 2, 29.86);
-
$sheet->setColumn(0, 3, 8.57);
-
$sheet->setColumn(0, 4, 15.57);
-
-
// Set row height
-
$sheet->setRow(0, 15.75);
-
-
// Create date format
-
$date_format =& $xls->addFormat();
-
$date_format->setNumFormat('date');
-
-
//Add test data
-
-
for ($j=1; $j <10; $j++) {
-
for ($i=0; $i<5; $i++) {
-
// Add date format
-
if ($i == 4) {
-
$sheet->writeString($j, $i, $data[$i], $date_format);
-
// Write integer
-
} else {
-
$sheet->writeNumber($j, $i, $data[$i]+$j+$i);
-
}
-
}
-
}
-
-
// Usage of some more advanced features
-
$xls->setCustomColor(10, 128, 128, 128); // Index of color -> 10
-
-
// Creating new format
-
$gray_bg_white_content = & $xls->addFormat();
-
$gray_bg_white_content->setColor('white'); // font color
-
$gray_bg_white_content->setFgColor(10); // use above created custom color for background color
-
$gray_bg_white_content->setSize(10); // font size
-
$gray_bg_white_content->setBold(); // make it bold
-
$gray_bg_white_content->setFontFamily('Verdana');
-
$gray_bg_white_content->setBottom(1); // bottom border
-
$gray_bg_white_content->setTop(1); // top border
-
$gray_bg_white_content->setRight(1); // right border
-
$gray_bg_white_content->setAlign('left'); // left aligned
-
-
// Create sum formula
-
$sheet->writeFormula(11, 0, '=SUM(A3:A9)', $gray_bg_white_content);
-
-
// Write email
-
$sheet->writeUrl(13, 0, 'mailto:info@trsplet.com', 'info@trsplet.com');
-
-
// Write URL
-
$sheet->writeUrl(15,0, 'http://www.trsplet.com', 'www.trsplet.com');
-
-
// Insert picture
-
$sheet->insertBitmap(17, 0, 'trspletlogo.bmp', 20, 20, 1, 1);
-
-
//Save file
-
$xls->close();
Kot vidite je moč s Spreadsheet_Excel_Writer paketom ustvariti Excel datoteke, ki vsebujejo več kot le osnovno funkcionalnost. Moramo pa se zavedati, da ustvarjanje dinamične vsebine v Excel datoteki vzame veliko več časa, kot če bi to počeli ročno v Excelu. Naprimer račun:

Zaradi uporabe PEAR paketa je na nekaterih PHP inštalacijah potrebno nastaviti direktno pot do PEAR-a imenika:
-
$cSeparator = (PHP_SHLIB_SUFFIX == 'dll') ? ';' : ':';
-
-
// set in ini, else PEAR gets lost
Žal ima tudi Spreadsheet_Excel_Writer nekaj težav z UTF8, vendar je moč na spletu najdi popravke zato, ki pa žal zaenkrat še niso vključeni v uradno verzijo na PEAR spletni strani. Zadnjo verzijo, ki že vsebuje zgoraj omenjene popravke je moč najti pod datotekami.
Dodatne informacije:
- Spreadsheet_Excel_Writer dokumentacija
- Podoben vodič za kreiranje Excel datoteke s pomočjo PHP-ja
- Kreiranje Excel datotek s pomočjo cakePHP framework-a
- Bug v zvezi z UTF8 problemom - rešitev že vključena v spodnji .rar datoteki
Datoteke:
- PHP skripta, ki dinamično kreira Excel datoteko
- Testni excel, ki je bil ustvarjen z zgoraj omenjeno PHP skripto
- Pear Spreadsheet_Excel_Writer paket z že vključenimi UTF8 popravki
Kakšne so vaše izkušnje z Excel datotekami v povezavi s PHP-jem? Uporabljate druge knjižnice kot jaz? Katere? Vsa vaša mnenja sporočite pod komentarje ...

junij 10th, 2008 ob 11:46 dopoldne
Odlična stvar za novejše verzije Excel-a je PHPExcel.
junij 10th, 2008 ob 12:01 popoldne
Fajn!
Ampak kdo danes želi račun v excelu in ne v pdfju ...
Drugače pa fajn posta o teh excelih, mogoče bo kdaj celo uporabno ...
junij 10th, 2008 ob 4:35 popoldne
Marsikdo dela račun še v Excelu, meni paše ravno to, da ga lahko spreminjaš tudi po tem ko je že geniriran.
Glede uporabnosti, ja tudi jaz redno to uporabljam in potem za nazaj iščem rešitve, zato sem se tut odloču vse dat gor da mam tut lastno referenco kjer lahko takoj uporabim zadevo:)