tabla - Exportar datos de MySQL a Excel en PHP
php exportar xls clase (11)
Creo que deberías probar con esta API
http://code.google.com/p/php-excel/source/browse/trunk/php-excel.class.php
Con este
Create a quick export from a database table into Excel
Compile some statistical records with a few calculations and deliver
the result in an Excel worksheet
Gather the items off your (web-based) todo list, put them in a
worksheet and use it as a foundation for some more statistics
magic.**
Estoy tratando de obtener mis datos de MySQL en un archivo de Excel, pero estoy teniendo problemas con las celdas de Excel. Todo mi texto va a una celda, me gustaría tener cada valor de fila en una celda de Excel separada. Aquí está mi código:
$queryexport = ("
SELECT username,password,fullname FROM ecustomer_users
WHERE fk_customer=''".$fk_customer."''
");
$row = mysql_fetch_assoc($queryexport);
$result = mysql_query($queryexport);
$header = '''';
for ($i = 0; $i < $count; $i++){
$header .= mysql_field_name($result, $i)."/t";
}
while($row = mysql_fetch_row($result)){
$line = '''';
foreach($row as $value){
if(!isset($value) || $value == ""){
$value = "/t";
}else{
$value = str_replace(''"'', ''""'', $value);
$value = ''"'' . $value . ''"'' . "/t";
}
$line .= $value;
}
$data .= trim($line)."/n";
$data = str_replace("/r", "", $data);
if ($data == "") {
$data = "/nno matching records found/n";
}
}
header("Content-type: application/vnd.ms-excel; name=''excel''");
header("Content-Disposition: attachment; filename=exportfile.xls");
header("Pragma: no-cache");
header("Expires: 0");
// output data
echo $header."/n".$data;
mysql_close($conn);`
Esta es una nueva versión del código php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "your_dbname";
//mysql and db connection
$con = new mysqli($servername, $username, $password, $dbname);
if ($con->connect_error) { //error check
die("Connection failed: " . $con->connect_error);
}
else
{
}
$DB_TBLName = "your_table_name";
$filename = "excelfilename"; //your_file_name
$file_ending = "xls"; //file_extention
header("Content-Type: application/xls");
header("Content-Disposition: attachment; filename=$filename.xls");
header("Pragma: no-cache");
header("Expires: 0");
$sep = "/t";
$sql="SELECT * FROM $DB_TBLName";
$resultt = $con->query($sql);
while ($property = mysqli_fetch_field($resultt)) { //fetch table field name
echo $property->name."/t";
}
print("/n");
while($row = mysqli_fetch_row($resultt)) //fetch_table_data
{
$schema_insert = "";
for($j=0; $j< mysqli_num_fields($resultt);$j++)
{
if(!isset($row[$j]))
$schema_insert .= "NULL".$sep;
elseif ($row[$j] != "")
$schema_insert .= "$row[$j]".$sep;
else
$schema_insert .= "".$sep;
}
$schema_insert = str_replace($sep."$", "", $schema_insert);
$schema_insert = preg_replace("//r/n|/n/r|/n|/r/", " ", $schema_insert);
$schema_insert .= "/t";
print(trim($schema_insert));
print "/n";
}
Las publicaciones de John Peter y Dileep kurahe me ayudaron a desarrollar lo que considero una solución más simple y más limpia, por si acaso alguien más sigue buscando. (No estoy mostrando ningún código de base de datos porque en realidad usé una variable $ _SESSION).
Las soluciones anteriores causan invariablemente un error al cargar en Excel, sobre la extensión que no coincide con el tipo de formato. Y algunas de estas soluciones crean una hoja de cálculo con los datos a lo largo de la página en columnas donde sería más tradicional tener encabezados de columna y enumerar los datos en las filas. Así que aquí está mi solución simple:
$filename = "webreport.csv";
header("Content-Type: application/xls");
header("Content-Disposition: attachment; filename=$filename");
header("Pragma: no-cache");
header("Expires: 0");
foreach($results as $x => $x_value){
echo ''"''.$x.''",'' . ''"''.$x_value.''"'' . "/r/n";
}
- Cambie a .csv (que Excel actualiza instantáneamente a .xls y no hay ningún error al cargar).
- Usa la coma como delimitador.
- Doble la clave y el valor para escapar de las comas en los datos.
- También agregué los encabezados de las columnas a
$results
por lo que la hoja de cálculo se veía aún mejor.
PHPExcel es tu amigo. Muy fácil de usar y funciona como un encanto.
Prueba este código Está definitivamente funcionando.
<?php
// Connection
$conn=mysql_connect(''localhost'',''root'','''');
$db=mysql_select_db(''excel'',$conn);
$filename = "Webinfopen.xls"; // File Name
// Download file
header("Content-Disposition: attachment; filename=/"$filename/"");
header("Content-Type: application/vnd.ms-excel");
$user_query = mysql_query(''select name,work from info'');
// Write data to file
$flag = false;
while ($row = mysql_fetch_assoc($user_query)) {
if (!$flag) {
// display field/column names as first row
echo implode("/t", array_keys($row)) . "/r/n";
$flag = true;
}
echo implode("/t", array_values($row)) . "/r/n";
}
?>
Prueba este código:
<?php
header("Content-type: application/vnd-ms-excel");
header("Content-Disposition: attachment; filename=hasil-export.xls");
include ''view-lap.php'';
?>
Pruebe el siguiente código por favor. solo actualiza dos valores.
1.su_database_name 2.table_name
<?php
$host="localhost";
$username="root";
$password="";
$dbname="your_database_name";
$con = new mysqli($host, $username, $password,$dbname);
$sql_data="select * from table_name";
$result_data=$con->query($sql_data);
$results=array();
filename = "Webinfopen.xls"; // File Name
// Download file
header("Content-Disposition: attachment; filename=/"$filename/"");
header("Content-Type: application/vnd.ms-excel");
$flag = false;
while ($row = mysqli_fetch_assoc($result_data)) {
if (!$flag) {
// display field/column names as first row
echo implode("/t", array_keys($row)) . "/r/n";
$flag = true;
}
echo implode("/t", array_values($row)) . "/r/n";
}
?>
Puede exportar los datos de MySQL a Excel utilizando este código simple.
<?php
include(''db_con.php'');
$stmt=$db_con->prepare(''select * from books'');
$stmt->execute();
$columnHeader ='''';
$columnHeader = "Sr NO"."/t"."Book Name"."/t"."Book Author"."/t"."Book
ISBN"."/t";
$setData='''';
while($rec =$stmt->FETCH(PDO::FETCH_ASSOC))
{
$rowData = '''';
foreach($rec as $value)
{
$value = ''"'' . $value . ''"'' . "/t";
$rowData .= $value;
}
$setData .= trim($rowData)."/n";
}
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=Book record
sheet.xls");
header("Pragma: no-cache");
header("Expires: 0");
echo ucwords($columnHeader)."/n".$setData."/n";
?>
completar el código aquí exportación php para sobresalir
Si solo quieres que tus datos de consulta se vuelquen en excel, tengo que hacer esto con frecuencia y usar una tabla html es un método muy simple. Utilizo mysqli para consultas db y el siguiente código para exportar a excel:
header("Content-Type: application/xls");
header("Content-Disposition: attachment; filename=filename.xls");
header("Pragma: no-cache");
header("Expires: 0");
echo ''<table border="1">'';
//make the column headers what you want in whatever order you want
echo ''<tr><th>Field Name 1</th><th>Field Name 2</th><th>Field Name 3</th></tr>'';
//loop the query data to the table in same order as the headers
while ($row = mysqli_fetch_assoc($result)){
echo "<tr><td>".$row[''field1'']."</td><td>".$row[''field2'']."</td><td>".$row[''field3'']."</td></tr>";
}
echo ''</table>'';
prueba este código
data.php
<table border="1">
<tr>
<th>NO.</th>
<th>NAME</th>
<th>Major</th>
</tr>
<?php
//connection to mysql
mysql_connect("localhost", "root", ""); //server , username , password
mysql_select_db("codelution");
//query get data
$sql = mysql_query("SELECT * FROM student ORDER BY id ASC");
$no = 1;
while($data = mysql_fetch_assoc($sql)){
echo ''
<tr>
<td>''.$no.''</td>
<td>''.$data[''name''].''</td>
<td>''.$data[''major''].''</td>
</tr>
'';
$no++;
}
?>
código para el archivo excel
export.php
<?php
// The function header by sending raw excel
header("Content-type: application/vnd-ms-excel");
// Defines the name of the export file "codelution-export.xls"
header("Content-Disposition: attachment; filename=codelution-export.xls");
// Add data table
include ''data.php'';
?>
si la versión mysqli
$sql="SELECT * FROM user_details";
$result=mysqli_query($conn,$sql);
if(mysqli_num_rows($result) > 0)
{
$no = 1;
while($data = mysqli_fetch_assoc($result))
{echo ''
<tr>
<<td>''.$no.''</td>
<td>''.$data[''name''].''</td>
<td>''.$data[''major''].''</td>
</tr>
'';
$no++;
http://codelution.com/development/web/easy-ways-to-export-data-from-mysql-to-excel-with-php/
Solo prueba con lo siguiente:
Parte de PHP:
<?php
/*******EDIT LINES 3-8*******/
$DB_Server = "localhost"; //MySQL Server
$DB_Username = "username"; //MySQL Username
$DB_Password = "password"; //MySQL Password
$DB_DBName = "databasename"; //MySQL Database Name
$DB_TBLName = "tablename"; //MySQL Table Name
$filename = "excelfilename"; //File Name
/*******YOU DO NOT NEED TO EDIT ANYTHING BELOW THIS LINE*******/
//create MySQL connection
$sql = "Select * from $DB_TBLName";
$Connect = @mysql_connect($DB_Server, $DB_Username, $DB_Password) or die("Couldn''t connect to MySQL:<br>" . mysql_error() . "<br>" . mysql_errno());
//select database
$Db = @mysql_select_db($DB_DBName, $Connect) or die("Couldn''t select database:<br>" . mysql_error(). "<br>" . mysql_errno());
//execute query
$result = @mysql_query($sql,$Connect) or die("Couldn''t execute query:<br>" . mysql_error(). "<br>" . mysql_errno());
$file_ending = "xls";
//header info for browser
header("Content-Type: application/xls");
header("Content-Disposition: attachment; filename=$filename.xls");
header("Pragma: no-cache");
header("Expires: 0");
/*******Start of Formatting for Excel*******/
//define separator (defines columns in excel & tabs in word)
$sep = "/t"; //tabbed character
//start of printing column names as names of MySQL fields
for ($i = 0; $i < mysql_num_fields($result); $i++) {
echo mysql_field_name($result,$i) . "/t";
}
print("/n");
//end of printing column names
//start while loop to get data
while($row = mysql_fetch_row($result))
{
$schema_insert = "";
for($j=0; $j<mysql_num_fields($result);$j++)
{
if(!isset($row[$j]))
$schema_insert .= "NULL".$sep;
elseif ($row[$j] != "")
$schema_insert .= "$row[$j]".$sep;
else
$schema_insert .= "".$sep;
}
$schema_insert = str_replace($sep."$", "", $schema_insert);
$schema_insert = preg_replace("//r/n|/n/r|/n|/r/", " ", $schema_insert);
$schema_insert .= "/t";
print(trim($schema_insert));
print "/n";
}
?>
Creo que esto puede ayudarte a resolver tu problema.