介绍
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 类将其导出到本地电脑中。