在PhpSpreadsheet中,可以使用PhpOffice\PhpSpreadsheet\IOFactory
类的load()
方法来读取多个文件。该方法接受一个文件路径数组作为参数,可以将多个文件加载到同一个工作簿中。
下面是一个示例代码:
use PhpOffice\PhpSpreadsheet\IOFactory;
// 文件路径数组
$files = [
'path/to/file1.xlsx',
'path/to/file2.xlsx',
'path/to/file3.xlsx'
];
// 创建一个新的工作簿
$spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
// 循环遍历文件路径数组,逐个读取文件并合并到工作簿中
foreach ($files as $file) {
$reader = IOFactory::createReaderForFile($file);
$reader->setReadDataOnly(true);
$worksheet = $reader->load($file);
$spreadsheet->addSheet($worksheet->getActiveSheet());
}
// 设置活动表单为第一个工作表
$spreadsheet->setActiveSheetIndex(0);
// 获取合并后的工作簿的数据
$data = $spreadsheet->getActiveSheet()->toArray(null, true, true, true);
// 打印数据
foreach ($data as $row) {
foreach ($row as $cell) {
echo $cell . "\t";
}
echo "\n";
}
在上述示例代码中,我们首先创建了一个新的工作簿对象 $spreadsheet
。然后使用 IOFactory::createReaderForFile()
方法根据文件路径创建一个读取器对象 $reader
,并设置 setReadDataOnly(true)
以只读取数据而不包括格式和公式。
接下来,我们使用 load()
方法逐个读取文件并将其加载到工作簿中,使用 addSheet()
方法将每个文件的工作表添加到工作簿中。
最后,我们使用 $spreadsheet->getActiveSheet()->toArray()
方法获取合并后的工作簿的数据,并使用 foreach 循环将数据打印出来。
请注意,上述示例中并未提及腾讯云相关产品,如有需要请参考腾讯云文档或咨询腾讯云官方支持。
领取专属 10元无门槛券
手把手带您无忧上云