如何使用 PHP 实现数据导入和导出功能

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 语句将数据存储到数据库中。

后端开发标签