<div dir="ltr"><div>para precesar unos datos que me mandan en una planilla de excel uso una clase que bajé de <a href="http://phpclasses.org">phpclasses.org</a>. Para que funcione bien el código de mas abajo los datos tienen que estar en la primera hoja empezando en A1, pero se puede mejorar para que tome datos de cualquier lado. La primer fila son los encabezados que determinan el nombre del campo de la tabla mysql a generar. Si faltan encabezados se genera un nombre al campo. Los archivos 'oleread.inc' y 'reader.php' se pueden bajar de <a href="http://gomezcassou.com.ar/archivos">gomezcassou.com.ar/archivos</a><br>
</div><div>En el ejemplo se toma el archivo 'datos.xls' para generar la tabla 'xls' utilizando la conexión a la base de datos '$mysqli'<br></div>Saludos<br>Mario<br><br><?php<br><br>// archivo de entrada <br>
$xlsFile =  'datos.xls';<br><br>require_once 'reader.php';
<br>$data = new Spreadsheet_Excel_Reader();
<br>$data->setOutputEncoding('CP1251');
<br>$data->setUTFEncoder('mb');
<br>$data->read($xlsFile);
<br><br>$sql = "DROP TABLE IF EXISTS `xls`;\n";<br>$res = $mysqli->query($sql);<br>$sql = "SET SQL_MODE=\"NO_AUTO_VALUE_ON_ZERO\";\n\n";<br>$res = $mysqli->query($sql);<br><br>// (1) Si hay datos en el 'xls'<br>
if (is_array( $data->sheets[0])) {<br>    $cols = $data->sheets[0]['numCols'];
<br>    $sql = "CREATE TABLE xls\n("; <br>     <br>    // (2) define los campos de la tabla 
<br>    for ($j = 1; $j <= $cols; $j++) {
<br>        $v = "`".trim($data->sheets[0]['cells'][1][$j])."`";<br>        if($v != "``"){
            $sql .= $v." varchar(255) default NULL";<br>            if ($j < $cols) {<br>                $sql.=",\n";
<br>            }<br>        }
<br>    } // (2)for ($j = 1; $j <= $cols; $j++) {
<br>    $sql .= ") ENGINE=MyISAM DEFAULT CHARSET=latin1;\n\n";
    $res=$mysqli->query($sql);<br><br>    // (2) hace los inserts de cada fila/registro
<br>    for ($i = 2; $i <= $data->sheets[0]['numRows']; $i++) {        <br>        // se fija si todavia hay datos<br>        $k = $data->sheets[0]['cells'][$i][1];<br>        //print("<br>k: $k");<br>
//------------------------------------------------------------------------ *VER LINEA VACIA* ---        <br>        if($k == ""){<br>            continue;<br>        }<br>//------------------------------------------------------------------------ *VER LINEA VACIA* ---             <br>
        $sql = "INSERT INTO `xls` (";
        //columns
<br>        for ($j = 1; $j < $cols+1; $j++) {
<br>            $v = "`".trim($data->sheets[0]['cells'][1][$j])."`";<br>            $sql .= $v;<br>            if ($j < $cols) {<br>                $sql.=",";<br>            }     <br>
        } //end columns
<br>        $sql .= ") values ("; 
<br>  
<br>        //values
<br>        for ($j = 1; $j < $data->sheets[0]['numCols']+1; $j++) {
<br>            $v = "'".trim($data->sheets[0]['cells'][$i][$j])."'";
<br>            $sql .= $v;<br>            if ($j < $cols) {<br>                $sql .= ",";<br>            }
<br>        } // end values
<br>        $sql .= ");\n";<br>          $res=$mysqli->query($sql);         <br>    }    // (2) end all records
<br>} // (1) if (is_array( $data->sheets[0]))<br><br>?><br></div><div class="gmail_extra"><br><br><div class="gmail_quote">El 8 de febrero de 2013 11:57, Bruno Meschini <span dir="ltr"><<a href="mailto:brunomeschini@hotmail.com" target="_blank">brunomeschini@hotmail.com</a>></span> escribió:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><div dir="ltr">
si ya estoy en eso, y acordandome de Leo haciendo me renegar en los parciales para abrir, leer y cerrar archivos!!!<br>gracias totales!<br><br><div><div></div><hr>Date: Fri, 8 Feb 2013 11:55:38 -0300<div><div class="h5">
<br>From: <a href="mailto:gerardovaliani@gmail.com" target="_blank">gerardovaliani@gmail.com</a><br>To: <a href="mailto:php-avanzado@pato2.fi.mdp.edu.ar" target="_blank">php-avanzado@pato2.fi.mdp.edu.ar</a><br>Subject: Re: [Php-avanzado] leer excel con php<br>
<br><div dir="ltr"><div><div>Si, elegi solo la delimitado por comas. <br></div>Despues buscate en el manual de PHP que hay funciones que manejan directamente los csv.<br><br></div>Saludos!<br></div><div><br>
<br><div>El 8 de febrero de 2013 11:46, Bruno Meschini <span dir="ltr"><<a href="mailto:brunomeschini@hotmail.com" target="_blank">brunomeschini@hotmail.com</a>></span> escribió:<br><blockquote style="border-left:1px #ccc solid;padding-left:1ex">




<div><div dir="ltr">
gracias gerardo, cuando pongo guardar me da 3 opciones de csv, macintosh, m-sdos, o la tercera q supongo que es la que hay que usar que solo dice (delimitado por comas).<br>es correcto?<br><br><div><div></div><hr>Date: Fri, 8 Feb 2013 11:09:10 -0300<br>

From: <a href="mailto:gerardovaliani@gmail.com" target="_blank">gerardovaliani@gmail.com</a><br>To: <a href="mailto:php-avanzado@pato2.fi.mdp.edu.ar" target="_blank">php-avanzado@pato2.fi.mdp.edu.ar</a><br>Subject: Re: [Php-avanzado] leer excel con php<br>

<br><div dir="ltr"><div>Guardarlo o no en la DB dependerá de las necesidades del sistema.<br></div>Sobre la lectura del excel, lo mejor es que el usuario guarde el excel en .csv y que suba ese archivo al sistema.<br><br>
Saludos!<br>

</div><div><br><br><div>El 8 de febrero de 2013 10:31, Bruno Meschini <span dir="ltr"><<a href="mailto:brunomeschini@hotmail.com" target="_blank">brunomeschini@hotmail.com</a>></span> escribió:<br>
<blockquote style="border-left:1px #ccc solid;padding-left:1ex">


<div><div dir="ltr">
hola lista, tengo un caso en que el cliente necesita subir un archivo .xls <br>y yo tengo que utilizar los datos que contiene con php, necesito me recomiendo la forma correcta de hacer esto, <br>y si lo guardo en la sql..<br>


gracias abrazoos<br>                                        </div></div>
<br>_______________________________________________<br>
Php-avanzado mailing list<br>
<a href="mailto:Php-avanzado@pato2.fi.mdp.edu.ar" target="_blank">Php-avanzado@pato2.fi.mdp.edu.ar</a><br>
<a href="http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado" target="_blank">http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado</a><br></blockquote></div><br></div>
<br>_______________________________________________
Php-avanzado mailing list
<a href="mailto:Php-avanzado@pato2.fi.mdp.edu.ar" target="_blank">Php-avanzado@pato2.fi.mdp.edu.ar</a>
<a href="http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado" target="_blank">http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado</a></div>                                         </div></div>
<br>_______________________________________________<br>
Php-avanzado mailing list<br>
<a href="mailto:Php-avanzado@pato2.fi.mdp.edu.ar" target="_blank">Php-avanzado@pato2.fi.mdp.edu.ar</a><br>
<a href="http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado" target="_blank">http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado</a><br></blockquote></div><br></div>
<br>_______________________________________________
Php-avanzado mailing list
<a href="mailto:Php-avanzado@pato2.fi.mdp.edu.ar" target="_blank">Php-avanzado@pato2.fi.mdp.edu.ar</a>
<a href="http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado" target="_blank">http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado</a></div></div></div>                                         </div></div>
<br>_______________________________________________<br>
Php-avanzado mailing list<br>
<a href="mailto:Php-avanzado@pato2.fi.mdp.edu.ar">Php-avanzado@pato2.fi.mdp.edu.ar</a><br>
<a href="http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado" target="_blank">http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado</a><br></blockquote></div><br></div>