Script php: Leggere file xls di excel con php
difficoltà:

Script simili
16/10/2006
Per leggere un file xls di excel con php faremo uso in questo script della classe ExcelReader che ci faciliterà come vedremo di molto il compito.
Per prima cosa scarichiamo la classe ExcelReader, estraiamo il contenuto e teniamo buona la cartella excel in cui ci sono i due file reader.php e oleread.inc che includeremo nel nostro script.
Nella nostra cartella avremo quindi la cartella excel sopra citata, il nostro file xls che chiamiamo file_excel.xls e leggi_excel.php che è il nostro script.
Dopo aver inizializzato la classe con
$data->read('file_excel.xls');
settiamo il nome del file da leggere, dopodichè facciamo un ciclo per ogni riga e colonna:$data->sheets[0]['numRows'];rappresentano rispettivamente il numero di righe e colonne contenute nel file excel.
$data->sheets[0]['numCols'];
A questo punto preleveremo il valore contenuto in ogni cella:
$data->sheets[0]['cells'][$i][$j];dove $i è la riga e $j è la colonna.
Ecco lo script completo per mostrare a video i dati contenuti nel file file_excel.xls in una tabella:
<?Questo script mostra solamente a video i dati prelevati dal file, ma chiaramente gli usi possono essere molteplici, ad esempio l'importazione dei dati da file excel a database.
require_once 'Excel/reader.php';
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('CP1251'); // Set output Encoding.
$data->read('file_excel.xls');
error_reporting(E_ALL ^ E_NOTICE);
echo "<table border='1'>";
for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
echo "<tr>";
for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {
echo "<td>".$data->sheets[0]['cells'][$i][$j]."</td>";
}
echo "</tr>";
}
echo "</table>";
?>
Permalink:
Tag:
Script Simili:
Script asp: Leggere un file xml o un feed rss con asp
Script asp: Leggere e scrivere file con asp
Script asp: Leggere il contenuto di un file remoto
Script php: Caricare e Scaricare file via ftp con php
Link utili:
Vota:
Commenti
19/3/2007 6:26:16
Tel me about
24/10/2007 11:14:18
Volevo segnalare che nel file
Excel/reader.php
occorre modificare
require_once 'Spreadsheet/Excel/Reader/OLERead.php';
in
require_once 'oleread.inc';
Saluti
:O)
24/10/2007 12:11:24
C'è un errore...
cerca questo file:
require_once 'Spreadsheet/Excel/Reader/OLERead.php';
Ma questo file non è presente da nessuna parte...
24/10/2007 12:20:49
EDIT: ok, ho letto ora il commento di roberto..
provveduto, ed ora funziona ;)
grazie miille a roberto e, ovviamente, a chi ha creato il codice ^_^
26/10/2007 17:19:36
Ciao a tutti.
Lanciando il file example.php ottengo questo errore:
Fatal error: Maximum execution time of 30 seconds exceeded in D:\preventivi\Excel\oleread.inc on line 172
Potete aiutarmi? Grazie Ciao
26/10/2007 17:24:13
30 secondi è il limite di default per l'esecuzione degli script. Se carichi un file molto grande potrebbe servirti più tempo. Metti in testa alla pagina:
set_time_limit(500);
al posto di 500 fai un po' di prove e metti un numero di secondi adatto. magari bastano 120.
10/12/2007 16:53:31
Salve a tutti,
molto bella la classe...ma:
ho un problemino nella lettura di una cella contente testo più lungo di 208 caratteri....stavo analizzando la classe per vedere se c'era un limite di lettura del buffer dell'ole..
voi ne sapete qualcosa?
11/1/2008 22:26:07
ho un problema con delle celle di excel che contengono date in formato gg/mm/aaaa che, quando lette da questo script, restituiscono questo notice: Notice: Undefined variable: formatstr in C:\www\Excel\reader.php on line 635. Come posso risolvere la cosa?
21/7/2008 11:51:32
scusate la mia ignoranza
come posso utilizzare lo script per visualizzare il file con flash?
25/8/2008 9:50:28
ciao. io ho un problema con questo script, non legge il file excel. Ho provato con tanti, ma non legge nessuno, mi da questo errore:
The filename .... is not readable
e sempre cosi. Forse perche uso excel 2007, che non salva piu i file in formato .xls ma in .xlsx.
Ho provato a modificare l'estensione, il file funziona lo stesso con .xls ma lo script non lo legge. Neanche se provo a far leggere allo script l'estensione .xlsx non va...
esiste qualche soluzione ?
grazie
25/8/2008 10:00:24
Prova quando salvi il file a scegliere salva file con nome e in tipo file scegliere ka versione 97-2003 (*.xls)
3/9/2008 10:51:14
Ciao a tutti,
ho un problema: come faccio a inserire il valore all'interno di una cella del file excel già esistente (e senza riscriverlo) con il php?
13/10/2008 12:40:43
ho utilizzato la classe ExcelReader, includendo il file reader.php. Quando cerco di leggere file xls di grandi dimensioni mi dà un errore con problemi di buffer.
Come posso risolvere questo problema ? Grazie
20/10/2008 13:45:59
Ho provato a usare questo script ma ricevo questo errore:
Parse error: syntax error, unexpected T_STRING in D:\Inetpub\webs\casiniboysit\Excel\reader.php on line 34
10/12/2008 17:14:29
Ciao a tutti,
Ho un problema, lo script funziona perfettamente ma mi fa solo vedere i dati a video. Come faccio a fare in modo che questi dati vengano inseriti in un database mysql con un nomale insert se nn ho i nomi dei vari campi?
Qualcuno può aiutarmi?
Grazie
21/4/2009 0:37:34
Salve raga, è da un po' che smanetto conquesto script ma proprio non mi funziona.
Quando faggio una proca con la pagina php mi esce questo errore:Fatal error: Cannot instantiate non-existent class: spreadsheet_excel_reader in ................... on line 66.
Alla linea 66 c'è in pratica parte dello script: $data = new Spreadsheet_Excel_Reader();
Eccetto l'errore da voi riportato non ho modificato nulla se non il nome del file da far leggere.
Spero seguiate ancora la discussione
Grazie anticipatamente.
21/4/2009 9:17:05
@Madsex:
hai scaricato e incluso la classe ExcelReader?
21/4/2009 14:57:21
Credo di si.Ti riferisci alla cartella phpexcelreader scaricata dal link in alto?Al suo interno ho preso la cartella excel e l'ho messa nel mio sito.
21/4/2009 15:03:23
Leggi il terzo commento, quello di Roberto e controlla che gli include abbiano i percorsi giusti
21/4/2009 15:38:59
Allora ho sotituito come da post.Ho messo require_once 'oleread.inc'; sia nel mio foglio php che in reader.php(come avevo fatto anche ieri) infatti non mi da problemi per questo ma per la riga successiva cioè questa:$data = new Spreadsheet_Excel_Reader();
Quali sono gli include?
21/4/2009 15:41:59
Dimenticavo di dire, per chiarezza, che require_once 'oleread.inc'; nel mio foglio php l'ho dovuto modificare in require_once 'Excel/oleread.inc'; altrimenti mi dava errore.
21/4/2009 15:58:35
Ovunqu siano i tupoi file devi includere nel tuo file php il file reader.php della libreria.
All'interno di questo devi sostituire l'include a OLERead.php con l'include del file oleread.inc.
L'errore che dici tu:
Cannot instantiate non-existent class
è perchè non trova la classe. Hai scritto il nome uguale(maiuscole/minuscole?)
21/4/2009 16:20:29
Le maiuscole e minuscole sono corrette.
Ma forse il problema stà proprio nell'includere il file reader.php.Come faccio?(non mi pare che nello script ci sia per cui per deduzione dovrebbe essere una cosa che devo scrivere io)
21/4/2009 16:40:08
require_once 'Excel/reader.php';
$data = new Spreadsheet_Excel_Reader();
La classe Spreadsheet_Excel_Reader è presente nel file reader.php
Cmq l'ho testato ora x vedere se c'eran cambiamenti e funziona.
21/4/2009 18:35:10
Si è presente ho anche modificato le maiuscole in minuscole ma non cambia nulla da sempre lo stesso errore.Dice che la classe non esiste in pratica. ti posto la porzione di codice del file reader.
class Spreadsheet_Excel_reader
{
/**
* Array of worksheets found
*
* @var array
* @access public
*/
var $boundsheets = array();
/**
* Array of format records found
*
* @var array
* @access public
*/
var $formatRecords = array();
21/4/2009 18:55:43
Olè, adesso sembra andare mi mancava questa stringa : require_once 'Excel/reader.php'; che tu hai sapientemente riportato.
Adesso pongo un altra domanda, se non voglio la tabella basta che tolgo table?
21/4/2009 20:14:32
Ok ho risolto, funziona bene.
Anche se non ho capito come fare per fargli leggere solo una parte del contenuto del file e come fare per visualizzare i caratteri così come li ho inseriti nel file excel, per esempio il grassetto, semplice semplice ma non me lo visualizza.
Come mai?
23/4/2009 19:31:42
Raga nessuno sa come risolvere questo arcano quesito?
Come faccio a far leggere il testo così come è scritto?
3/6/2009 18:31:52
http://www.legadellapanchina.it/ldp_09/php/mimmo1.php
salve sto lavorando su questo codice ma non riesco a fare 2 cose... nella personalizzazione,
eliminare la lettura delle celle con A B C D e 1 2 3 4 5 dal foglio excel
e inoltre vorrei cercare di formattare le colonne tutte della stessa larghezza...
help me!!!
4/6/2009 11:27:05
@Mimmo:
prova invece che fare il cliclo da $i=1 e $j=1 a farli a partire dal 2. Per fare le colonne uguali bnasta che quandio stampi il td gli dai larghezza fissa:
echo "<td width='50'>".$data->sheets[0]['cells'][$i][$j]."</td>";
4/6/2009 21:23:29
ciao scusate mi potete dare una mano a capire come si inseriscono i dati all-interno delle tabelle??
Grazie
4/6/2009 21:25:15
scusate nn ho specificato i dati stanno dentro un file excel e io li devo caricare tabelle. :)
5/10/2009 16:05:33
Ciao,
la classe è ottima, finora son riuscito a fare tutto quello che mi serviva, l'unica cosa che non riesco a fare è leggere il nome dei fogli.
Ho provato qualcosa del tipo:
foreach($data->sheets as $key => $param){
foreach($data->sheets[$key] as $name => $param){
echo $name."<br/>";
}
}
con il seguente risultato:
maxrow
maxcol
numRows
numCols
cells
cellsInfo
Qualcuno sa aiutarmi?
Grazie in anticipo
13/10/2009 23:34:30
Ho un problema con le stringhe lunghe: se in una cella si superano i 208 caratteri php li tronca comunque a 208. Avete mica trovato la soluzione??
Grazie anticipatamente
25/10/2009 0:07:31
Buongiorno a tutti, è possible far leggere una sola riga anzichè tutto il file xls e magari solo la riga che contine un determinato nome?
grazie a tutti
16/1/2010 20:27:58
ciao a tutti ho provato questo script ma mi da errore
Fatal error: Call to a member function read() on a non-object in C:\xampp\htdocs\fanta\templates\vam_jblue\leggi_excel.php on line 3... ho incluso il file reader.php... qualcuna sa il come mai??
grazie
21/1/2010 17:53:58
Innanzitutto grazie per la classe.
Come posso formattare (formato, colore, sfondo, ect) i dati importati da excel nella tabella???
tnk
1/2/2010 22:44:47
Per Caludio
"The filename .... is not readable...
esiste qualche soluzione ?"
Si, il problema dipende dal fatto che i nomi dei campi nel file excel (la prima riga per intenderci) non sono uguali ai nomi dei campi nella tabella. Per Esempio: Nome Cognome (in excel) Nome_Cognome nella tabella. Devi sistemare la prima riga del file Excel con i nomi dei capi della Tabella.
13/3/2010 13:30:00
mi da problemi nella formattazione delle date...le converte male....come posso risolvere?
12/5/2010 14:55:32
scusate ma invece di postare tutti sti commenti e modifiche ad errori (uno per capirci qualcosa deve leggere per mezz'ora), non era più facile ripubblicare i files corretti?
29/5/2010 16:15:57
Salve, complimenti per lo script, solo che c'è un bug (credo) nella lettura di stringhe da excel che contengono l'apice singolo...
o sbaglio io? come posso risolvere?

Feed Rss
28/2/2007 13:06:09
Visto che questa pagina non riporta il nome dell'autore, vorrei lasciare, invece di un commento, un sentito ringraziamento a quanti vi hanno lavorato. Sentito perchè questo script sarà la base da cui posso partire per evitare al mio pool di caricare in db dei file Excel a manella. Non è poca cosa poter far fare ad un programma il lavoro di caricare 3.123.702 cartelle Excel. Ancora grazie.
Alfredo