1. PHP 实现数据导入和导出功能介绍
在 Web 开发中,数据的导入和导出功能非常重要。对于后台管理系统、电子商城、博客等应用来说,数据都需要不断被导入和导出。PHP 作为广泛应用的动态语言,提供了简单的数据导入和导出实现方式。本文将介绍如何使用 PHP 实现数据导入和导出功能。
2. 数据导出
2.1. 导出 CSV 文件
CSV 文件(Comma-Separated Values) 是一种常用的数据导出格式,可以使用 Microsoft Excel 和 Google Sheets 打开。
以下是使用 PHP 导出 CSV 文件的步骤:
创建一个二维数组,保存导出的数据。假设我有一个学生信息表,包含姓名和成绩两列:
$data = array(
array('姓名', '成绩'),
array('张三', 90),
array('李四', 85),
array('王五', 95)
);
使用 fputcsv() 函数生成 CSV 文件:
header("Content-Disposition: attachment; filename=\"students.csv\"");
header("Content-Type: text/csv");
$file = fopen('php://output', 'w');
foreach ($data as $row) {
fputcsv($file, $row);
}
fclose($file);
exit;
第一行设置文件名和响应头;第二行设置文件类型;第三行打开一个文件句柄;最后遍历二维数组,每行使用 fputcsv() 函数将其写入文件并换行。
运行以上脚本后,你将会看到一个下载弹框,点击下载即可得到 students.csv 文件,打开后内容如下:
姓名,成绩
张三,90
李四,85
王五,95
2.2. 导出 Excel 文件
Excel 文件是一种更加强大的数据导出格式,可以在多个平台上使用。
以下是使用 PHP 导出 Excel 文件的步骤:
使用 PHPExcel 库读取数据:
require_once 'Classes/PHPExcel.php';
$objPHPExcel = new PHPExcel();
$objPHPExcel->getActiveSheet()
->setCellValue('A1', '姓名')
->setCellValue('B1', '成绩')
->setCellValue('A2', '张三')
->setCellValue('B2', '90')
->setCellValue('A3', '李四')
->setCellValue('B3', '85')
->setCellValue('A4', '王五')
->setCellValue('B4', '95');
以上脚本使用 PHPExcel 创建了一个 Excel 实例,并设置了数据内容。
使用 header() 设置 HTTP 响应头:
header("Content-Disposition: attachment; filename=\"students.xlsx\"");
header("Content-Type: application/vnd.ms-excel");
header("Cache-Control: no-cache");
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
exit;
以上脚本设置了文件名并设置了响应头。最后使用 PHPExcel_IOFactory::createWriter() 函数将数据写入 Excel 文件并发送到 HTTP 输出。
运行以上脚本后,你将会看到一个下载弹框,点击下载即可得到 students.xlsx 文件,打开后内容如下:
姓名 | 成绩 |
---|---|
张三 | 90 |
李四 | 85 |
王五 | 95 |
3. 数据导入
3.1. 导入 CSV 文件
以下是使用 PHP 导入 CSV 文件的步骤:
使用 fopen() 函数打开 CSV 文件并读取内容:
$file = fopen('students.csv', 'r');
// 跳过第一行,读取学生信息
$data = array();
fgetcsv($file);
while (($row = fgetcsv($file)) !== FALSE) {
$data[] = $row;
}
fclose($file);
以上脚本打开了文件句柄,并使用了 fgetcsv() 函数按行读取 CSV 文件。注意第一行内容是标题,需要跳过。
将数据存储到数据库中:
$conn = new mysqli($servername, $username, $password, $dbname);
foreach ($data as $row) {
$sql = "INSERT INTO students (name, score)
VALUES ('".$row[0]."', '".$row[1]."')";
if ($conn->query($sql) !== TRUE) {
echo "Error: " . $sql . "" . $conn->error;
}
}
$conn->close();
以上脚本将数据存储到名为 students 的表中,数据包括 name 和 score 两个字段。
运行以上脚本后,你可以从数据库中查询到导入的数据。
3.2. 导入 Excel 文件
以下是使用 PHP 导入 Excel 文件的步骤:
使用 PHPExcel 库读取 Excel 文件:
require_once 'Classes/PHPExcel.php';
$objPHPExcel = PHPExcel_IOFactory::load("students.xlsx");
$data = array();
foreach ($objPHPExcel->getActiveSheet()->getRowIterator() as $row) {
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false);
$row_data = array();
foreach ($cellIterator as $cell) {
$row_data[] = $cell->getValue();
}
array_push($data, $row_data);
}
以上脚本使用 PHPExcel 将 Excel 文件读取到一个二维数组中。
将数据存储到数据库中:
$conn = new mysqli($servername, $username, $password, $dbname);
foreach ($data as $row) {
$sql = "INSERT INTO students (name, score)
VALUES ('".$row[0]."', '".$row[1]."')";
if ($conn->query($sql) !== TRUE) {
echo "Error: " . $sql . "" . $conn->error;
}
}
$conn->close();
以上脚本将数据存储到名为 students 的表中,数据包括 name 和 score 两个字段。
运行以上脚本后,你可以从数据库中查询到导入的数据。
4. 总结
本文介绍了如何使用 PHP 实现数据导入和导出功能。可以使用 fputcsv() 函数和 PHPExcel 库轻松地导出 CSV 和 Excel 文件,使用可以使用 fopen() 函数和 PHPExcel 库读取 CSV 和 Excel 文件中的内容。同时,可以使用 SQL INSERT 语句将数据存储到数据库中。