将数据从数据库导出到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;
在PHP中将数据导出到Excel

通常,导出数据功能用于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