| Usuario |
Generar excel desde PHP |
Desconocido
|
| Enviado - 22/10/2004 |
| |
Hola amigos:
Estoy realizando una aplicación en php y necesito crear un archivo csv con el resultado de una consulta SQL. Para esto utilizo el sgte. código:
header("Content-type: application/vnd.ms-csv");
header("Content-Disposition: attachment; filename=archivo.csv" );
include("lib_bd_ods.php");
$sql="select...(es una consulta grande...)";
$result=consultas($sql);
luego creo una tabla html con el resultado de la consulta. Hasta aquí todo va bien, el problema es que cuando crea el archivo .csv, lo crea en blanco, sin datos. La razón, si no me equivoco es la llamada a la librería lib_bd_ods.php, pero debo llamarla obligatoriamente porque es donde se realiza la conexion a oracle y es algo especial...
He buscado mil formas de solucionar este problema, así es que si alguien me puede ayudar se lo agradecería mucho...
Gracias.
|
| |
|
Desconocido
|
| Enviado - 18/1/2005 |
| |
por fa, mi nombre es Carlos Jordán, si lo graste realizar la generación de archivos Excel en PHP te rogaría que me escribas:
[email protected] |
| |
|
Desconocido
|
| Enviado - 3/2/2005 |
| |
| porfa a mi tambien , y si queres te chupo la pija |
| |
|
Desconocido
|
| Enviado - 28/4/2005 |
| |
Hola
Lo que hago yo es crear mi archivo CSV en el mismo documento donde se despliega el resultado en html (generalmente con un while o do while).
Creo una variable en donde se va almacenando el contenido de cada registro separado por comas, en otras palabras creo el contenido del archivo almacenándolo en una variable, posteriormente al final del documento creo un formulario con un campo oculto imprimiendo con un echo en el parámetro value, la variable.
Después creo un botón o un enlace que apunte a otro documento php que sólo contiene las cabeceras y la variable que imprimo sólo con un echo después de las cabeceras:
Código PHP para creación de la variable:
$inf="reg,page,date,time-PST\n";
//Los nombres de los campos
while($row=mysql_fetch_array($r))
$inf.="$row[reg],$row[web_access],$row[date],$row[time]\n";
Código del formulario:
<form name="VF" method="post" action="temp/TMP_QUERY.php">
<table width="300" border="0" align="center" cellpadding="0" cellspacing="0">
<tr valign="top">
<td height="39" colspan="2" align="center" class="redtextsub"><p>The Info was sended to CVS File, now open or save this file with any name you want!!! </p>
</td>
</tr>
<tr>
<!-- Campo oculto al que he llamado inf -->
<td width="138" align="center"><input type="hidden" name="inf" value="<? echo "$inf";?>">
<a href="javascript:document.VF.submit()" class="BlakLink">Download CSV File </a></td>
<td width="162" align="center"><a href="javascript:history.back()" class="BlakLink">Back</a></td>
</tr>
</table>
Documento PHP TMP_QUERY.php
<?
header("Content-type: application/vnd.ms-csv");
header("Content-Disposition: attachment; filename=FileQuery.csv" );
echo "$_POST[inf]";
?>
Yo lo he hecho así pero con MySQL y no he tenido ningún problema
Espero les sirva!!! |
| |
|
Desconocido
|
| Enviado - 22/6/2005 |
| |
Por favor , pueden enviarme a mi correo la siguiente libreria
lib_bd_ods.php
a:
[email protected] |
| |
|
Desconocido
|
| Enviado - 25/10/2005 |
| |
Necesito de su ayuda...
una ves que ya realize el archivo, como puedo dejar este en el escritorio de la maquina del cliente, el cual realiza la consulta y genera la exportacion de los resultados a excel por medio de un boton que estoy dejando en la página...
Espero su respuesta.. mi codigo es el siguiente:
if($excel){
$nombre_archivo = $_REQUEST['prueba'];
$fecha=date("d_m_y_h_i_s");
$nombre_com = "C:/Documents and Settings/All Users/Escritorio/".$nombre_archivo.$fecha.".xls";
/*se hace nuevamente la consulta */
if ($sistemas and $centrales and $fi and $ff){
$diafi = substr($fi, 0, 2);
$mesfi = substr($fi, 3, 2);
$aniofi = substr($fi, 6, 4);
$diaff = substr($fi, 0, 2);
$mesff = substr($fi, 3, 2);
$anioff = substr($fi, 6, 4);
$fi = "".$mesfi."/".$diafi."/".$aniofi;
$ff = "".$mesff."/".$diaff."/".$anioff;
$fi=$fi." 00:00:00";
$ff=$ff." 23:59:59";
$rs=mssql_query("select distinct variables_analogicas.id_senal, variables_analogicas.Descripcion_senal, equipos_proteccion_medicion.descripcion, valores_analogicos.Valor, variables_analogicas.unidades, valores_analogicos.Fecha_registro from Variables_analogicas inner join equipos_proteccion_medicion on variables_analogicas.id_equipo_prot_med = equipos_proteccion_medicion.id_equipo_prot_med and variables_analogicas.id_sistema = '$sistemas' and variables_analogicas.id_central = '$centrales' inner join valores_analogicos on variables_analogicas.id_senal = valores_analogicos.id_senal and (cast(dbo.valores_analogicos.fecha_registro AS smalldatetime) between '$fi' and '$ff') order by variables_analogicas.id_senal, valores_analogicos.Fecha_registro",$conectID );
}else if($sistemas and $centrales){
$rs=mssql_query("select distinct variables_analogicas.id_senal, variables_analogicas.Descripcion_senal, equipos_proteccion_medicion.descripcion, variables_analogicas.Valor, variables_analogicas.unidades, variables_analogicas.Fecha_registro from Variables_analogicas inner join equipos_proteccion_medicion on variables_analogicas.id_equipo_prot_med = equipos_proteccion_medicion.id_equipo_prot_med and variables_analogicas.id_sistema = '$sistemas' and variables_analogicas.id_central = '$centrales' order by variables_analogicas.id_senal, variables_analogicas.Fecha_registro",$conectID );
}
if ( $rs ) {
/* y se empieza a crear el archivo excel */
$fichero=fopen($nombre_com, "w");
if ($fichero) {
$contador = 0;
while ( $contador < mssql_num_rows ( $rs ) ) {
$tupla_extraida = mssql_fetch_array ( $rs );
fputs ($fichero, $tupla_extraida["id_senal"]); // la "/t" te separa por celdas
fputs ($fichero, "\t".$tupla_extraida["Descripcion_senal"]);
fputs ($fichero, "\t".$tupla_extraida["descripcion"]);
fputs ($fichero, "\t".$tupla_extraida["Valor"]);
fputs ($fichero, "\t".$tupla_extraida["unidades"]);
fputs ($fichero, "\t".$tupla_extraida["Fecha_registro"]."\n"); // la "/n" brinca linea
$contador++;
}
}
}
echo "<strong>ARCHIVO CREADO</strong>";
fclose ($fichero);
} |
| |
|
Desconocido
|
| Enviado - 25/10/2005 |
| |
perdon se me olvido comentar con respecto al punto anterior que si alguien sabe de esa funcion por favor me escriba un correo a [email protected]
Se los agradecere. |
| |
|
|
|