将数据从数据库导出到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
