[Programmazione] Leggere file xls con PHP

October 20th, 2009 Giulio Rossetti Posted in HowTo, OpenSource, Programmazione No Comments »

No Gravatar

Come buona parte dei miei post anche questo nasce, oltre che con l’intento di fare un po’ di informazione, per ricordarmi di come ho già risolto un problema che mi si è presentato: in effetti la mia memoria di solito è fallace e googolare per cercar la stessa informazione più di una volta non mi piace granchè ^_^

Un attività che spesso capita di dover effettuare è quella di processare “on the fly” un file xls (magari disponibile a seguito dell’upload di un utente) e gestire i dati in esso contenuti (possibilmente strutturati come da noi previsto altrimenti la cosa è improponibile..) per, ad esempio, popolare tabelle di un database o più semplicemente visualizzarli sul nostro sito.

Bene, la soluzione a questo problema è più semplice di quanto si pensi.

Esiste infatti un progetto su Sourceforge che tramite la classe ExcelReader rende disponibile tutto ciò che ci occorre.

Dopo aver incluso i due file reader.php e oleread.inc nel nostro script e saremo quindi pronti per svolgere il lavoro “sporco”.

Per prima cosa inizializziamo la nostra classe  e in seguito passiamogli il file da aprire:

$data->read('nome_filel.xls');

la cosa successiva da fare, ovviamente, è effettuare un ciclo per ogni riga e colonna ricordando che:

$data->sheets[0]['numRows'];
$data->sheets[0]['numCols'];

rappresentano rispettivamente il numero di righe e colonne contenute nel file xls (in particolare nel primo foglio del documento).
A questo punto possiamo prelevare il valore contenuto in ogni cella accedendovi come faremo con una banalissima matrice:

$data->sheets[0]['cells'][$i][$j];

Un esempio di script per mostrare a video i dati di un file xls in forma tabellare è quindi il seguente:

<?
require_once 'Excel/reader.php';
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('CP1251');
$data->read('nome_file.xls');
error_reporting(E_ALL ^ E_NOTICE);

echo "<table>";
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>";
?>

PS: Ovviamente è possibile ciclare anche sui fogli che compongono il file xls..

Reblog this post [with Zemanta]

Popularity: 8% [?]

AddThis Social Bookmark Button

Justin.tv: un esempio pratico di come usare TOR

September 20th, 2009 Giulio Rossetti Posted in HowTo, Internet, Linux, Video 3 Comments »

No Gravatar

Come al solito il tempo che intercorre tra i miei post è direttamente proporzionale a quello che riesco a ritagliarmi tra tutte le varie attività in cui son quotidianamente impelagato.. e ovviamente le cose che avrei in mente di scrivere sono in quantità  inversamente proporzionale al tempo che ho per farlo.

Bhe premesse inutili a parte direi di proporvi una volta tanto un applicazione pratica abbastanza banale di un argomento di cui già in passato ho scritto su queste pagine: Tor.

Tralascio la descrizione, che trovate linkata sopra, e vi espongo brevemente il caso d’uso.

Immagino che conosciate il servizio di streaming offerto da Justin.tv (chi non ha mai guardato una partita in streaming via..) e tutte le varie vicissitudini che si son susseguite da quando – per meri motivi di lucro sui quali non entrerò in merito [farsi pagare per qualcosa di non esattamente legale non è proprio.. come dire.. legale?!?] – è stato introdotto un filtro sul numero di utenti per zona geografica che hanno la possibilità di visionare gratuitamente ciò che viene trasmesso.

Bene. O meglio, male per chi era abituato ad usare tale servizio.

Immediatamente si son trovati 1000 escamotage e programmi vari che consentivano di aggirare tale filtro – cosa banale in effetti – ma come al solito il 90% di tali programmi non è esattamente per sistemi GNU/Linux.

Un esempio di come risolvere il problema alla radice è usare TOR. Il filtro viene infatti eseguito sull’IP degli utenti collegati e questo implica che se si usa un proxy, nel nostro caso un proxy anonimizzante [termine orrendo lo ammetto],  seppur pagando in termini di velocità nella connessione saremo in grado di visionare ciò da cui altrimenti saremo esclusi – a meno di non essere così disperati da pagare il balzello di Justin.tv ma, per quanto mi riguarda, se devo pagare per uno schifio di streaming non propriamente legale allora pago direttamente per il singolo evento su sky o sul digitale terrestre.

Bene questo è quanto,  ora sperimentate!

Le istruzioni per installare e configurare Tor sono presenti in un post precedente per il resto, buona visione!!

Stay Tuned!

Reblog this post [with Zemanta]

Popularity: 40% [?]

AddThis Social Bookmark Button

Ubuntu One finalmente è arrivato l’invito!!

July 1st, 2009 Giulio Rossetti Posted in HowTo, Internet, Linux, Software, Ubuntu 2 Comments »

No Gravatar

Ormai avevo perso le speranze (avevo fatto richiesta  diversi mesi fa’ proprio nei primi giorni in cui il servizio offerto da Canonical fu lanciato sul web) ma finalmente stamattina una mail di invito è arrivata ^_^

UbuntuOne, come è già stato ripetuto a gran voce nella blogosfera al momento del lancio del servizio, si propone come un semplice strumento per la sincronizzazione tra più computer.

Al servizio al momento si accede solo su invito (che può essere richiesto al sito del ufficiale): ricevuto lo stesso è quindi possibile installare il client dal repository che viene indicato e registrare i computer da abilitare al servizio sul proprio account (utilizza per l’accesso l’account di lauchpad).

Per le poche prove che ho fatto negli ultimi minuti mi sembra un ottimo servizio che, volendo, potrebbe essere esteso con ulteriori funzionalità.

Avviato il client ci è sufficiente copiare i file desiderati nella cartella “Ubuntu One” creata nella nostra home e attendere la sincronizzazione con lo spazio remoto – nulla di più semplice ed immediato. Unico neo è il poco spazio a disposizione nella versione gratuita del servizio

Il servizio è offerto infatti con 2 piani tariffari: il piano base gratuito (2Gb di spazio) e quello a pagamento (10$ al mese per 10GB di spazio).

Popularity: 8% [?]

AddThis Social Bookmark Button