PHP Excel是一个强大的PHP开源库,用于在PHP应用程序中创建、读取和修改Microsoft Office Excel电子表格。在Web开发中,Excel表格经常被用于数据导出和导入,特别是在管理系统和电子商务平台上使用最广泛。本文将详细介绍PHP Excel的使用,以及如何通过PHP实现Excel文件的上传。
上传Excel文件通常是实现数据导入的第一步。PHP中通过$_FILES[]变量来实现文件上传操作,其中包含了上传文件的类型、名称、大小以及临时存储路径等信息。我们可以通过检查$_FILES[]中的type来判断上传文件的类型是否为Excel文件。
if ($_FILES["file"]["type"] != "application/vnd.ms-excel") { echo "只允许上传Excel文件"; exit; }
一旦确认上传文件是Excel文件后,我们就可以通过PHPExcel库来读取上传的文件内容,目前PHPExcel已经被其官方项目PHPExcel团队弃用,推荐使用PHPSpreadsheet。PHPSpreadsheet是PHPExcel的续作,保持着PHPExcel的全部特性,并将开源库从PHPExcel团队转移到了官方的社区phpoffice。
require 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\IOFactory; $file = $_FILES['file']['tmp_name']; $reader = IOFactory::createReader('Xlsx'); $reader->setReadDataOnly(true); $spreadsheet = $reader->load($file); $worksheet = $spreadsheet->getActiveSheet(); $highestRow = $worksheet->getHighestRow(); for ($row = 1; $row<= $highestRow; ++$row) { $data = $worksheet->getCellByColumnAndRow(1, $row)->getValue(); echo $data . "
"; }
通过上述代码,我们可以实现对Excel文件的读取操作。可以看到,我们首先需要使用Composer来引入PHPSpreadsheet库,然后通过IOFactory类的createReader函数来创建一个Excel读取器。由于我们只需要读取Excel中的数据,而不需要读取格式,因此可以使用setReadDataOnly函数来设置只读取数据。通过load函数来将上传的Excel文件加载到内存中,同时获取工作表,并得到工作表中最高行的序号。之后通过循环读取工作表中的数据,并将每个单元格赋值给变量$data,最后通过echo函数输出$data。
在实际项目开发中,通常需要将上传的Excel数据写入到数据库中。我们可以通过MySQL数据库和PDO类来实现数据的写入操作,以下是样例代码:
require 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\IOFactory; // 连接数据库 $dbh = new PDO('mysql:host=localhost;dbname=test', 'root', 'password'); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $file = $_FILES['file']['tmp_name']; $reader = IOFactory::createReader('Xlsx'); $reader->setReadDataOnly(true); $spreadsheet = $reader->load($file); $worksheet = $spreadsheet->getActiveSheet(); $highestRow = $worksheet->getHighestRow(); for ($row = 2; $row<= $highestRow; ++$row) { $name = $worksheet->getCellByColumnAndRow(1, $row)->getValue(); $sex = $worksheet->getCellByColumnAndRow(2, $row)->getValue(); $age = $worksheet->getCellByColumnAndRow(3, $row)->getValue(); $sql = "INSERT INTO `user` (`name`, `sex`, `age`) VALUES (?, ?, ?)"; $stmt = $dbh->prepare($sql); $stmt->execute([$name, $sex, $age]); }
通过以上代码,我们可以在工作表的第一行写上标题,然后在第二行开始插入数据到数据库中。可以看到在代码中我们通过PDO库来连接MySQL数据库,之后建立一个INSERT SQL语句,通过prepare函数创建一个PDOStatement对象,执行execute()函数,将Excel表格中一行数据插入到user数据表中。
总之,PHP Excel是实现Excel文件上传和数据导入的重要工具,可以帮助我们快速实现Excel数据的读取、写入以及导入操作。通过学习PHP Excel的使用,我们可以在Web开发中更加灵活高效地操作Excel文件。