PHPExcel - 将两个文件合二为一

时间:2015-07-16 19:58:16

标签: php phpexcel xls xlsx

我有两个xlsx文件:first.xlsxsecond.xlsx,我将这两个文件合并为一个,并为附加的最后一个文件(second.xlsx)的第二部分着色。我该怎么办?

1 个答案:

答案 0 :(得分:1)

将两个文件打开/加载为两个单独的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');