PHPExcel - 将两个文件合二为一

PHPExcel - Combine two file in one

我有两个 xlsx 文件:first.xlsxsecond.xlsx,我会将这两个文件合二为一,并为最后一个文件的第二部分添加颜色 (second.xlsx)。我能做什么?

Open/load 两个文件作为两个单独的 PHPExcel 对象,并使用 addExternalSheet() 方法将工作表从第二个 PHPExcel 对象移动到第一个,然后按颜色调整并保存第一个。

$objPHPExcel1 = PHPExcel_IOFactory::load("MergeBook1.xlsx");
$objPHPExcel2 = PHPExcel_IOFactory::load("MergeBook2.xlsx");

foreach($objPHPExcel2->getSheetNames() as $sheetName) {
    $sheet = $objPHPExcel2->getSheetByName($sheetName);
    $sheet->setTitle($sheet->getTitle() . ' copied');
    $objPHPExcel1->addExternalSheet($sheet);
}

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel1, 'Excel2007');
$objWriter->save('mergedBooks.xlsx');

使用 addExternalSheet() 可确保所有样式、合并等以及单元格数据都从第二个工作簿转移到第一个

您可以在合并循环之后和保存之前做任何您想要的额外样式和着色

编辑

如果您只是想将数据从一个工作簿复制到另一个工作簿,那么可以这样:

$objPHPExcel1 = PHPExcel_IOFactory::load("MergeBook1.xlsx");
$objPHPExcel2 = PHPExcel_IOFactory::load("MergeBook2.xlsx");

$objPHPExcel1->getActiveSheet()->fromArray(
    $objPHPExcel2->getActiveSheet->toArray(),
    null,
    'A' . ($objPHPExcel1->getActiveSheet()->getHighestRow() + 1)
);

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel1, 'Excel2007');
$objWriter->save('mergedBooks.xlsx');