将数据库数据导出为ex​​cel格式

我有以下代码从数据库导出到Excel的数据。

<?PHP include '../connection.php'; $colnames = array( "fname" => "First Name", "lname" => "Last Name", "email" => "Email Address", "phone" => "Phone No.", "timeFrom" => "Time From", "timeto" => "Time to", "comments" => "User Comments" ); function cleanData(&$str) { $str = preg_replace("/\t/", "\\t", $str); $str = preg_replace("/\r?\n/", "\\n", $str); if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"'; } function map_colnames($input){ global $colnames; return isset($colnames[$input])? $colnames[$input]:$input; } // filename for download $filename = "website_data_" . date('Ymd') . ".xls"; header("Content-Disposition: attachment; filename=\"$filename\""); header("Content-Type: application/vnd.ms-excel"); $flag = false; $result = mysql_query("SELECT * FROM futurehomeowner1 ORDER BY id") or die(mysql_error()); while(false !== ($row = mysql_fetch_assoc($result))) { if(!$flag) { // display field/column names as first row $firstline=array_map('map_colnames',array_keys($row)); fputs($firstline,',','"'); echo implode("\t", array_keys($row)) . "\r\n"; $flag = true; } array_walk($row, 'cleanData'); echo implode("\t", array_values($row)) . "\r\n"; } exit; ?> 

它工作正常,从数据库获取数据到Excel。 我想使用标题名称作为我自己的数据库列名称。 问题是,当Excel文件下载没有头名称,并显示此消息“ Warning: fputs() expects parameter 1 to be resource, array given ”。 此消息的数据正在正确显示在一列中。

你用错误的方式使用fputs ,你应该传递一个对文件和string的引用。 首先你应该打开一个文件处理程序到你的文件名以后再传递。

 <?PHP include '../connection.php'; $colnames = array( "fname" => "First Name", "lname" => "Last Name", "email" => "Email Address", "phone" => "Phone No.", "timeFrom" => "Time From", "timeto" => "Time to", "comments" => "User Comments" ); function cleanData(&$str) { $str = preg_replace("/\t/", "\\t", $str); $str = preg_replace("/\r?\n/", "\\n", $str); if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"'; } function map_colnames($input){ global $colnames; return isset($colnames[$input])? $colnames[$input]:$input; } // filename for download $filename = "website_data_" . date('Ymd') . ".xls"; $handler = fopen($filename, "w+"); header("Content-Disposition: attachment; filename=\"$filename\""); header("Content-Type: application/vnd.ms-excel"); $flag = false; $result = mysql_query("SELECT * FROM futurehomeowner1 ORDER BY id") or die(mysql_error()); while(false !== ($row = mysql_fetch_assoc($result))) { if(!$flag) { // display field/column names as first row $firstline=array_map('map_colnames',array_keys($row)); fputs($handler, implode("\t",$firstline)); $flag = true; } array_walk($row, 'cleanData'); fputs($handler, implode("\t", array_values($row)) . "\r\n"); } exit; ?> 

看看PHP手册