Čitanje Excel fajlova iz PHP-a

Verujem da je svako od developera bar jednom u svojoj karijeri imao potrebu da importuje podatke iz nekog Excel fajla. Bez obzira da li se radi o cenovniku ili listi leadova koji morate iz Excela importovati u bazu, postupak je gotovo uvek isti. Prvo što radite je export Excel fajla u običan txt fajl (csv, xml, …) a zatim parsovanje podataka (radi importa u bazu i sl.). Prilično zamoran postupak, pogotovo ako ga morate raditi često, recimo za update cenovnika i sl.

Zahvaljujući besplatnoj phpexcelreader klasi, gore opisan postupak može biti prošlost. Jednostavno, sa phpexcelreader klasom podacima u Excelu možete pristupiti direktno referencijanjem indeksa reda odnosno kolone. Što je najlepše od svega, ova klasa podržava UTF-8 encoding, tako da neće biti problema sa našim slovima. Evo kratkog primera kako to u praksi izgleda.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Excel Reader Test Page</title>
</head>
<body>
<?php

require_once 'Excel/reader.php';

//nova instanca Spreadsheet_Excel_Reader klase
$data = new Spreadsheet_Excel_Reader();

// Setuj encoding na UTF-8
$data->setOutputEncoding('UTF-8');

// Citaj fajl excel.xls
$data->read('excel.xls');

/* Korisni metodi:
 $data->sheets[0]['numRows'] - broj redova u prvom sheet-u
 $data->sheets[0]['numCols'] - broj kolona u prvom sheet-u
 $data->sheets[0]['cells'][$i][$j] - podaci iz $i-reda i $j-kolone

 $data->sheets[0]['cellsInfo'][$i][$j] - informacije o celiji iz $i-reda i $j-kolone
 za vise informacija pogledajte example.php fajl koji ide uz klasu
*/

//a sada, cisto primera radi, ispisi sve podatke iz excel fajla, red po red
for ($i = 1; $i sheets[0]['numRows']; $i++) 
{
	for ($j = 1; $j sheets[0]['numCols']; $j++) 
	{
		echo "\"".$data->sheets[0]['cells'][$i][$j]."\",";
	}
	echo "\n";
}

?>
</body>
</html>

2 thoughts to “Čitanje Excel fajlova iz PHP-a”

  1. OK, čita super Excel fajlove ali naša slova nikako da prikaže. Probao sam i sa UTF-8 i sa CP1250 i ništa.
    Da li znaš rešenje?

  2. Koliko se secam, kod mene su nasa slova radila. Jesi li siguran da si setovao odgovarajuci charset sa:

    $data->setOutputEncoding(‘UTF-8’);

    (isti charset i u html-u)

Comments are closed.