【发布时间】:2015-07-16 19:58:15
【问题描述】:
我有两个 xlsx 文件:first.xlsx 和 second.xlsx,我会将这两个文件合二为一,并为最后一个附加文件的第二部分着色 (second.xlsx)。我能做什么?
【问题讨论】:
我有两个 xlsx 文件:first.xlsx 和 second.xlsx,我会将这两个文件合二为一,并为最后一个附加文件的第二部分着色 (second.xlsx)。我能做什么?
【问题讨论】:
将这两个文件作为两个单独的 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');
【讨论】:
getActiveSheet().... 不是 getActiveSheet..... 请开始阅读 PHPExcel 文档并查看示例