Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/07/2008, 07:40
miguel_ont
 
Fecha de Ingreso: julio-2008
Mensajes: 2
Antigüedad: 15 años, 9 meses
Puntos: 0
Convertir a Excel desde Base de datos en PHP

Hola soy nuevo por aquí, y me gustaria que me ayudaran con esto. Cuando escribo la descripcion en la funcion de escribir en excel, me convierte a excel correctamente, pero me de lectura al abrir el archivo, el problema esta en la linea que tiene esto escrito

xlsWriteLabel($contador,6,strip_tags($row['descripcion']));

alguien me puede ayudar? gracias.

<?
// Query Database
require_once("../lib/db.php");

// Send Header
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Disposition: attachment;filename=catalogo.csv ");
header("Content-Transfer-Encoding: binary ");

// XLS Data Cell

xlsBOF();
xlsWriteLabel(0,0,"categoria");
xlsWriteLabel(0,1,"referencia_interna");
xlsWriteLabel(0,2,"nombre");
xlsWriteLabel(0,3,"precio");
xlsWriteLabel(0,4,"url_producto");
xlsWriteLabel(0,5,"url_imagen");
xlsWriteLabel(0,6,"descripcion");
xlsWriteLabel(0,7,"gastos de envio");
xlsWriteLabel(0,8,"disponibilidad");
xlsWriteLabel(0,9,"marca");
xlsWriteLabel(0,10,"ean");
xlsWriteLabel(0,11,"garantia");
xlsWriteLabel(0,12,"precio_tachado");
xlsWriteLabel(0,13,"referencia_modelo");
xlsWriteLabel(0,14,"divisa");
xlsWriteLabel(0,15,"referencia_fabricante");

$contador = 1;
$result = mysql_query("SELECT * FROM `productos` WHERE `activo` = '1';");
while($row = mysql_fetch_array($result))
{
$id = $row['id'];
$id_categoria = $row['id_categoria'];
$query = "SELECT * FROM `estilos` WHERE `id_producto` = '$id' ORDER BY `precio` ASC LIMIT 1;";
$sql2 = mysql_query($query);
if($row2 = mysql_fetch_array($sql2))
{
$precio = number_format($row2['precio'], 2,'.','.');
$precio_oferta = number_format($row2['precio_oferta'], 2,'.','.');
}
$sql2 = mysql_query("SELECT * FROM `categorias` WHERE `id` = '$id_categoria' LIMIT 1;");
if($row2 = mysql_fetch_array($sql2))
{
$categoria = html_entity_decode($row2['categoria'], ENT_QUOTES);
}

xlsWriteLabel($contador,0,$categoria);
xlsWriteNumber($contador,1,str_pad($row['id'], 8, "0", STR_PAD_LEFT));
xlsWriteLabel($contador,2,$row['titulo']);
xlsWriteNumber($contador,3,$precio);
xlsWriteLabel($contador,4,"index.php?id=".$row['id_categoria']);
xlsWriteLabel($contador,5,"productos/".$row['imagen']);
xlsWriteLabel($contador,6,strip_tags($row['descripcion']));
xlsWriteLabel($contador,7,"0");
xlsWriteLabel($contador,8,"en stock");
xlsWriteLabel($contador,9,"mi_marca");
xlsWriteNumber($contador,10,"0");
xlsWriteLabel($contador,11,"7 días sin abrir el producto");
xlsWriteNumber($contador,12,$precio_oferta);
xlsWriteNumber($contador,13,str_pad($row['id'], 8, "0", STR_PAD_LEFT));
xlsWriteLabel($contador,14,"EUR");
xlsWriteNumber($contador,15,str_pad($row['id'], 8, "0", STR_PAD_LEFT));
$contador++;
}

xlsEOF();
exit();

function xlsBOF() {
echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
return;
}

function xlsEOF() {
echo pack("ss", 0x0A, 0x00);
return;
}

function xlsWriteNumber($Row, $Col, $Value) {
echo pack("sssss", 0x203, 14, $Row, $Col, 0x0);
echo pack("d", $Value);
return;
}

function xlsWriteLabel($Row, $Col, $Value ) {
$L = strlen($Value);
echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);
echo $Value;
return;
}

function pc_html2ascii($s) {
// convert links
$s = preg_replace('/<a\s+.*?href="?([^\" >]*)"?[^>]*>(.*?)<\/a>/i', '$2 ($1)', s);

// convert <br>, <hr>, <p>, <div> to line breaks
$s = preg_replace('@<(b|h)r[^>]*>@i',"\n",$s);
$s = preg_replace('@<p[^>]*>@i',"\n\n",$s);
$s = preg_replace('@<div[^>]*>(.*)</div>@i',"\n".'$1'."\n",$s);

// convert bold and italic
$s = preg_replace('@<b[^>]*>(.*?)</b>@i','*$1*',$s);
$s = preg_replace('@<i[^>]*>(.*?)</i>@i','/$1/',$s);

// decode named entities
$s = strtr($s,array_flip(get_html_translation_table(HTM L_ENTITIES)));

// decode numbered entities
$s = preg_replace('//e','chr(\\1)',$s);

// remove any remaining tags
$s = strip_tags($s);

return $s;
}

?>