在PHP中将MySQL数据导出到Excel

我试图让我的MySQL数据到Excel文件,但我有Excel单元格的问题。 我所有的文本都去了一个单元格,我想每个单独的Excel单元格中的行值。 这是我的代码:

$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);` 

试试以下内容:

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"; } ?> 

我想这可能会帮助你解决你的问题。

试试这个代码。 这是最初的工作。

 <?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"; } ?> 

PHPExcel是你的朋友。 非常容易使用,像魅力一样工作。

https://github.com/PHPOffice/PHPExcel

我认为你应该尝试使用这个API

http://code.google.com/p/php-excel/source/browse/trunk/php-excel.class.php

有了这个

 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.** 

试试这个代码:

 <?php header("Content-type: application/vnd-ms-excel"); header("Content-Disposition: attachment; filename=hasil-export.xls"); include 'view-lap.php'; ?> 

如果你只是想把你的查询数据转储到Excel中,我必须经常这样做,并使用一个HTML表格是一个非常简单的方法。 我用数据库查询mysqli和以下代码导出到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>'; 

John Peter和Dileep kurahe的post帮助我开发了我认为是更简单更清洁的解决scheme,以防其他人仍在寻找。 (我没有显示任何数据库代码,因为我实际上使用了$ _SESSIONvariables。)

上面的解决scheme总是在Excel中加载时导致错误,关于不符合格式types的扩展。 这些解决scheme中的一些创build了一个电子表格,其中的数据遍布在页面的列中,在这种情况下更具有传统意义的是具有列标题并将数据列入行中。 所以这里是我简单的解决scheme:

 $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"; } 
  1. 更改为.csv(Excel即时更新为.xls,加载时无错误。)
  2. 使用逗号作为分隔符。
  3. 双引号和键值来避免数据中的任何逗号。
  4. 我还将列标题添加到$results所以电子表格看起来更好。

请尝试下面的代码。 只是更新两个值。
1.你的数据库名称2.表名

  <?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"; } ?> 

试试这个代码

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++; } ?> 

代码为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'; ?> 

如果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/

这是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"; }