There are many ways to use php to export mysql database into excel tables. The simplest one is to directly use the php fputcsv function. You can also directly enter the csv format. To generate the excel standard format, we need to use a third-party plug-in
Method 1, use fputcsv
The code is as follows | Copy code | ||||||||
// Output the Excel file header, you can replace user.csv with the file name you want header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="user.csv"'); header('Cache-Control: max-age=0'); // Get data from the database. In order to save memory, do not read the data into the memory at once. Just read it line by line from the handle $sql = 'select * from tbl where ……'; $stmt = $db->query($sql);
$fp = fopen('php://output', 'a'); //Output Excel column name information $head = array('Name', 'Gender', 'Age', 'Email', 'Telephone', '……'); foreach ($head as $i => $v) { // Excel for CSV supports GBK encoding, it must be converted, otherwise the code will be garbled $head[$i] = iconv('utf-8', 'gbk', $v); } //Write data to the file handle through fputcsv fputcsv($fp, $head); // Counter $cnt = 0; // Every $limit line, refresh the output buffer, not too big, not too small $limit = 100000; // Fetch data line by line without wasting memory while ($row = $stmt->fetch(Zend_Db::FETCH_NUM)) { $cnt ++; if ($limit == $cnt) { //Refresh the output buffer to prevent problems caused by too much data ob_flush(); flush(); $cnt = 0; } foreach ($row as $i => $v) { $row[$i] = iconv('utf-8', 'gbk', $v); } fputcsv($fp, $row); } |
The code is as follows | Copy code |
/*Connect to database*/ $DB_Server = "localhost"; $DB_Username = "root"; $DB_Password = "123456"; $DB_DBName = "mydb"; //Target database name $DB_TBLName = "mytable"; //Target table name $Connect = @mysql_connect($DB_Server, $DB_Username, $DB_Password) or die("Couldn't connect."); mysql_query("Set Names 'utf8'");<🎜> <🎜>$savename = date("YmjHis"); //Export excel file name $file_type = "vnd.ms-excel"; $file_ending = "xls"; header("Content-Type: application/$file_type;charset=utf8"); header("Content-Disposition: attachment; filename=".$savename.".$file_ending"); //header("Pragma: no-cache");<🎜> <🎜>/*Write remark information*/ $now_date = date("Y-m-j H:i:s"); $title = "Database name: $DB_DBName, data table: $DB_TBLName, backup date: $now_date"; echo("$titlen");<🎜> <🎜>/*Query database*/ $sql = "Select * from $DB_TBLName"; $ALT_Db = @mysql_select_db($DB_DBName, $Connect) or die("Couldn't select database"); $result = @mysql_query($sql,$Connect) or die(mysql_error());<🎜> <🎜>/*Write table field name*/ for ($i = 0; $i < mysql_num_fields($result); $i++) { echo mysql_field_name($result,$i) . ","; } echo "n";<🎜> <🎜>/*Write table data*/ $sep = ",t"; while($row = mysql_fetch_row($result)) { $data = ""; for($i=0; $i $data .= "NULL".$sep; //Processing NULL fields elseif ($row[$i] != "") $data .= "$row[$i]".$sep; else $data .= "".$sep; //Processing empty fields } echo $data."n"; } ?> |
Example 3, the second one is almost done
The code is as follows | Copy code | ||||||||||||||||||||||||||||||
if($temp_list){//有数据 $Html.='
$Html.=''; $mime_type = 'application/vnd.ms-excel'; header('Content-Type: ' . $mime_type); header('Content-Disposition: attachment; filename="invoice.xls"'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); echo $Html; |
Sometimes excel will automatically convert the format of numbers, so some mobile phone numbers, ID cards, etc. will be messed up, so you can define them first when exporting
The code is as follows
|
Copy code | |||||
http: //www.bkjia.com/PHPjc/632921.html