Exportar de mysql a excel

jjboscan
12 de Agosto del 2005
Hola a todos
Como puedo hacer para con php exportar una tabla de mysql a excell o bien desde una tabla de html exportarlo directamente a excel sin necesidad de copiar y pegar

MagOscuro
12 de Agosto del 2005
Pues mira, yo hace un tiempo encontre un script para realziar esa funcion y trabaja a las mil maravillas. puedes modificarlo seleccionado los campos ke necesites y del registro ke necesites, eso ya es cosa tuya. al igual ke la respuesta anterior, es conveniente e crees un boton ke llame al archivo que contien el script siguiente. lo copio y lo pego enterito con todo y creditos =p

<?php
/********************************************
PHP - Excel Extraction Tutorial Code
Page: excel.php
Developer: Jeffrey M. Johns
Support: [email protected]
Created: 10/01/2003
Modified: N/A
*********************************************
Notes/Comments: This code is a very basic/replica of
the code that is in the tutorial. To make it work you must
define your connection variables below. Make sure you
replace the following all CAPS text with your proper values.
*********************************************
YOUR DATABASE HOST = (ex. localhost)
USERNAME = username used to connect to host
PASSWORD = password used to connect to host
DB_NAME = your database name
TABLE_NAME = table in the database used for extraction
*********************************************
This code will extract the data from your table and format
it for an excel spreadsheet download. It is very quick,
simple, and to the point. If you only want to extract
certain fields and not the whole table, simply replace
the * in the $select variable with the fields you want
to extract.
*********************************************
Disclaimer: Upon using this code, it is your responsibilty
and I, Jeffrey M. Johns, can not be held accountable for
any misuse or anything that may go wrong.
*********************************************
Other: Support will not be provided if the code is
enhanced or changed. I do not have the time for
figuring out your changes and modifications. I will only
offer simple support for the code listed below.
/********************************************/
define(db_host, "localhost");
define(db_user, "root");
define(db_pass, "");
define(db_link, mysql_connect(db_host,db_user,db_pass));
define(db_name, "sia");
mysql_select_db(db_name);
/********************************************
Write the query, call it, and find the number of fields
/********************************************/
$select = "SELECT * FROM tabla";
$export = mysql_query($select);
$count = mysql_num_fields($export);
/********************************************
Extract field names and write them to the $header
variable
/********************************************/
for ($i = 0; $i < $count; $i++) {
$header .= mysql_field_name($export, $i)."t";
}
/********************************************
Extract all data, format it, and assign to the $data
variable
/********************************************/
while($row = mysql_fetch_row($export)) {
$line = '';
foreach($row as $value) {
if ((!isset($value)) OR ($value == "")) {
$value = "t";
} else {
$value = str_replace('"', '""', $value);
$value = '"' . $value . '"' . "t";
}
$line .= $value;
}
$data .= trim($line)."n";
}
$data = str_replace("r", "", $data);
/********************************************
Set the default message for zero records
/********************************************/
if ($data == "") {
$data = "n(0) Records Found!n";
}
/********************************************
Set the automatic downloadn section
/********************************************/
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=archivodeexcel.xls");
header("Pragma: no-cache");
header("Expires: 0");
print "$headern$data";
?>

espero haberte ayudado

fernanda
12 de Agosto del 2005
Hola:
Quisiera saber si con este codigo se podria exportar toda la bdd de MySQL a excel...
Te agradeceria tu respuesta
Salu2

Pedro Chacin
12 de Agosto del 2005
Hola, yo quiero hacer otra pregunta. Necesito hacer respaldo de una base de datos mysql desde php sin entrar a ningún shell, solo apretar un botón o un link y realizar el respaldo de la base de datos. Podrian ayudarme? gracias de antemano.

Jaime Vera
12 de Agosto del 2005
Para empezar creas un formulario con un boton para exportar a excel. Despues preguntas si ya se mando la peticion del formulario para exportar a excel desde mysql y por último mandas los encabezados para mandar a guardar como xls.

<?PHP
$file="archivo"; // Nombre para guardar el archivo
$create_xls=$_POST['create_xls'];
if($create_xls==vnd.ms-excel){
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: attachment; filename=$file.xls");
}else{
?>
<form method=post action=<?=$_SERVER['PHP_SELF'];?>>
<input type=hidden name="create_xls" value="vnd.ms-excel">
<input name="submit" type=submit value="Exportar a excel">
</form>
<?}?>//A partir de aqí va el contenido general incluyendo los datos extraidos de mysql.

<?//conexion, consultas, etc..........?>
<table>
<tr><td><?=etc...?>

Algo así es lo que debes realizar, es probable que este script contenga errores, ya que no lo he probado.
NOTA: Al exportar de html a excel debes tomar en cuenta que los formatos CSS son ignorados, así que en excel se verá todo como texto sin formato, si lo quieres con formato debes derle el formato con HTML.
Al momento de exportar las celdas que tienes en tus tablas se convertirán en celdas de excel; así que trata de hacerlo lo más limpio posible para obtener óptimos resultados.

SALUDOS!!! ( jjaimevera )

fernanda
12 de Agosto del 2005
hola:
Te quisiera hacer una consulta, yo quiero exportar toda la bdd (MySQL) a excel, pq resulta q tengo un sistema que necesita respaldar, y el usuario no deberia entrar al php admin para crear el respaldo.. me entiendes
Aca en ejemplo indica como exportar solo una tabla, pero como te comentaba anteriormente yo quiero exportarlas todas
agradeciendo tu respuesta
Fernanda

Ledita
12 de Agosto del 2005
Mil gracias!!!!! El código me funcionó de maravilla!! tiene unos pequeños errores en su distribuciòn, pero al final lo hace espléndidamente! No sabes lo agradecida que me encuentro. GRACIAS!!!!!