将数据从数据库导出到Excel与PHP和MySQL
在此示例脚本中,我们将从Excel文件中的数据库导出数据。
创建数据库表:
对于此示例,我们将使用MySQL数据库中的某些基本字段创建“成员”表。
“成员”表保存将导出到Excel的记录。
CREATE TABLE `members` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(25) COLLATE utf8_unicode_ci NOT NULL, `email` varchar(50) COLLATE utf8_unicode_ci NOT NULL, `gender` enum('Male','Female') COLLATE utf8_unicode_ci NOT NULL, `country` varchar(20) COLLATE utf8_unicode_ci NOT NULL, `created` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
数据库配置(dbconfig.php):
以下代码用于使用PHP和MySQL连接数据库。
指定数据库主机('$dbhost'),用户名('$dbusame'),密码('$dbpassword'),以及根据数据库凭据的名称('$dbname')。
<?php //Database configuration $dbHost = "localhost"; $dbUsername = "root"; $dbPassword = "root"; $dbName = "onitroad"; //Create database connection $db = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName); //Check connection if ($db->connect_error) { die("Connection failed: " . $db->connect_error); }
从数据库导出数据:
以下代码有助于从MySQL数据库导出数据,并将其作为Excel文件下载。
- “FilterData()”函数用于过滤串之前添加到Excel数据行之前。
- '$filename' - 定义要下载的Excel文件的名称。
- '$字段' - 定义名为Excel表的列。
- '$exceldata' - 将第一行添加到Excel表中作为列名。
- 从数据库中获取成员的数据并添加到Excel表的行。
- 定义标题以强制文件下载。
- 渲染Excel表的数据。
<?php //Include the database config file require_once 'dbConfig.php'; //Filter the excel data function filterData(&$str){ $str = preg_replace("/\t/", "\t", $str); $str = preg_replace("/\r?\n/", "\n", $str); if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"'; } //Excel file name for download $fileName = "members_export_data-" . date('Ymd') . ".xlsx"; //Column names $fields = array('SR.N.', 'NAME', 'EMAIL', 'GENDER', 'COUNTRY', 'CREATED'); //Display column names as first row $excelData = implode("\t", array_values($fields)) . "\n"; //Get records from the database $query = $db->query("SELECT * FROM members ORDER BY name ASC"); if($query->num_rows > 0){ //Output each row of the data $i=0; while($row = $query->fetch_assoc()){ $i++; $rowData = array($i, $row['name'], $row['email'], $row['gender'], $row['country'], $row['created']); array_walk($rowData, 'filterData'); $excelData .= implode("\t", array_values($rowData)) . "\n"; } }else{ $excelData .= 'No records found...'. "\n"; } //Headers for download header("Content-Disposition: attachment; filename=\"$fileName\""); header("Content-Type: application/vnd.ms-excel"); //Render excel data echo $excelData; exit;
通常,导出数据功能用于Web应用程序的数据管理部分。
Excel是在文件中导出数据的最佳格式,我们可以使用PHP轻松将数据导出到Excel。
在本教程中,我们将展示如何将数据导出到PHP中的Excel。
通过单击单击,用户可以从MySQL数据库导出数据以Excel并将其下载在.xls/.xlsx文件中。
将数据与PHP导出到Excel
在此示例脚本中,我们将从数组(在脚本中定义)导出到Excel文件的数据。
“$DATA”变量以数组格式保存数据,该数据将使用PHP导出到Excel。
$data = array( array("NAME" => "John Doe", "EMAIL" => "john.doe@gmail.com", "GENDER" => "Male", "COUNTRY" => "United States"), array("NAME" => "Gary Riley", "EMAIL" => "gary@hotmail.com", "GENDER" => "Male", "COUNTRY" => "United Kingdom"), array("NAME" => "Edward Siu", "EMAIL" => "siu.edward@gmail.com", "GENDER" => "Male", "COUNTRY" => "Switzerland"), array("NAME" => "Betty Simons", "EMAIL" => "simons@example.com", "GENDER" => "Female", "COUNTRY" => "Australia"), array("NAME" => "Frances Lieberman", "EMAIL" => "lieberman@gmail.com", "GENDER" => "Female", "COUNTRY" => "United Kingdom") );
“FilterData()”函数用于在添加到Excel Spent行之前过滤字符串。
function filterData(&$str){ $str = preg_replace("/\t/", "\t", $str); $str = preg_replace("/\r?\n/", "\n", $str); if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"'; }
以下代码有助于在Excel中导出数据并将其作为文件下载。
- '$filename'变量定义了Excel文件的名称。
- 内容处理和内容类型标题强制Excel文件下载。
- 通过“$DATA”数组中的每个键/值对运行循环。
- 使用“$flag”变量显示列名作为第一行。
- PHP array_walk()函数用于将数据与'filterdata()'函数一起过滤。
//Excel file name for download $fileName = "onitroad_export_data-" . date('Ymd') . ".xlsx"; //Headers for download header("Content-Disposition: attachment; filename=\"$fileName\""); header("Content-Type: application/vnd.ms-excel"); $flag = false; foreach($data as $row) { if(!$flag) { //display column names as first row echo implode("\t", array_keys($row)) . "\n"; $flag = true; } //filter data array_walk($row, 'filterData'); echo implode("\t", array_values($row)) . "\n"; } exit;
日期:2020-06-02 22:15:29 来源:oir作者:oir