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

介绍

Excel 作为一款常用的办公软件,使用频率非常高。在实际的开发中,我们会遇到需要将数据导入到 Excel 中或者将 Excel 中的数据导出到数据库中的需求。本文将介绍如何使用 PHP 实现数据导入和导出 Excel 的功能。

Excel 数据导入

准备工作

使用 PHP 实现 Excel 数据导入需要使用到 PHPExcel 库,我们需要先下载该库并引入。

// 引入 PHPExcel 库

require_once 'PHPExcel/PHPExcel.php';

接下来我们需要读取 Excel 文件,可以使用 PHPExcel 中的 IOFactory::load() 方法来读取 Excel 文件。

$file = 'data.xls';

$excel = PHPExcel_IOFactory::load($file);

读取数据

读取 Excel 文件以后,我们需要从文件中获取每个单元格的数据。对于多个工作表的情况,我们还需要指定当前要使用的工作表。

$sheet = $excel->getActiveSheet();

$highestRow = $sheet->getHighestRow(); // 获取最高行数

$highestColumn = $sheet->getHighestColumn(); // 获取最高列数

$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn); // 获取最高列数的数字索引

通过 getHighestRow() 方法可以获取工作表的最高行数,通过 getHighestColumn() 方法可以获取工作表的最高列数。但是需要注意的是,这里获取的列数是以字符串的形式返回的,所以我们需要通过 columnIndexFromString() 方法将其转换为数字索引。

接下来我们可以使用 for 循环来遍历每个单元格获取其中的数据。

// 遍历每个单元格获取数据

for ($row = 1; $row <= $highestRow; $row++) {

for ($col = 0; $col < $highestColumnIndex; $col++) {

$value = $sheet->getCellByColumnAndRow($col, $row)->getValue();

echo "$value\t"; // 打印每个单元格的数据

}

echo "\n"; // 换行分隔每一行

}

Excel 数据导出

准备工作

使用 PHP 实现 Excel 数据导出也需要使用到 PHPExcel 库,我们需要先下载该库并引入。

// 引入 PHPExcel 库

require_once 'PHPExcel/PHPExcel.php';

接下来,我们需要创建一个新的 Excel 文件。

$excel = new PHPExcel();

写入数据

将数据写入 Excel 文件需要使用到 Worksheet 对象,我们需要创建一个新的 Worksheet 来写入数据。

$sheet = $excel->getActiveSheet();

// 设置当前工作表的名称

$sheet->setTitle('sheet1');

接下来我们需要将数据写入到单元格中,对于多个工作表的情况,我们还需要指定当前要操作的工作表。

// 写入数据到单元格中

$data = [

['姓名', '年龄', '性别'],

['张三', '20', '男'],

['李四', '21', '女'],

['王五', '22', '男'],

];

foreach ($data as $row => $cols) {

foreach ($cols as $col => $value) {

$sheet->setCellValueByColumnAndRow($col, $row + 1, $value);

}

}

在上面的代码中,我们通过 foreach 循环遍历二维数组并将其中的每个元素写入到单元格中。

导出 Excel 文件

将数据写入到 Excel 文件中以后,我们就可以将其导出到本地电脑中了。

// 将 Excel 文件导出到本地

// 设置 HTTP 头信息

header('Content-Type: application/vnd.ms-excel');

header('Content-Disposition: attachment;filename="data.xls"');

header('Cache-Control: max-age=0');

// 使用 IOFactory 类将 Excel 文件输出到浏览器

$objWriter = PHPExcel_IOFactory::createWriter($excel, 'Excel5');

$objWriter->save('php://output');

在上面的代码中,我们设置了 HTTP 头信息以便将 Excel 文件导出到浏览器中。我们使用 PHPExcel_IOFactory 类的 createWriter 方法将数据保存到 Excel 文件中,然后使用 save 方法将其输出到浏览器中。

总结

本文介绍了如何使用 PHP 实现数据导入和导出 Excel 的功能。对于数据导入部分,我们使用了 PHPExcel 中的工作表和单元格对象获取 Excel 文件中的数据。对于数据导出部分,我们使用了 PHPExcel 中的工作表和单元格对象将数据写入 Excel 文件中,并使用 PHPExcel_IOFactory 类将其导出到本地电脑中。

后端开发标签