我有两个xlsx文件:first.xlsx
和second.xlsx
,我将这两个文件合并为一个,并为附加的最后一个文件(second.xlsx
)的第二部分着色。我该怎么办?
答案 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');