PHPExcel,将带有样式的工作表从一个xls文档复制到另一个文档

4

我需要使用其他文件的列表创建一个xls文件。

我可以像这样操作:

    $objReader = PHPExcel_IOFactory::createReader('Excel5');
    $file_tmpl = $objReader->load('doc10.xls');
$file_tmpl - 生成的文件
    $file1 = $objReader->load('doc11.xls');

$file1 - 被复制表格的文件

    $file1->setActiveSheetIndex(1);
    $sheet = $file1->getActiveSheet();          
    $file_tmpl->addSheet($sheet,1);

作为结果,表格被复制了,但是单元格的样式却没有被复制:边框、字体、文本大小和颜色。如何同时移动它们及其样式呢?
谢谢。

看起来这就是你的问题:https://dev59.com/VY_ea4cB1Zd3GeqPNFuU。 - Gendos-ua
3个回答

2

PHPExcel内置了一个方法:addExternalSheet(),可以将一个工作簿的样式和内容复制到另一个工作簿中。

在PHPExcel的/Examples文件夹中有一个脚本(43mergeWorkbooks.php),演示了如何使用该方法。


我找不到在 /Examples 文件夹里的脚本 (43mergeWorkbooks.php),而 (40duplicateStyle.php) 是最后一个。PHPExcel 版本为1.8.0。 - Иван Васильев
谢谢!这正是我所寻找的! - Иван Васильев

2
$objPHPExcel = PHPExcel_IOFactory::load("x.xlsx");
$objPHPExcel1 = PHPExcel_IOFactory::load("y.xlsx");
foreach($objPHPExcel1->getSheetNames() as $sheetName)
{
    $sheet = $objPHPExcel1->getSheetByName($sheetName);
    $sheet->setTitle('Sheet'.$k);
    $objPHPExcel->addExternalSheet($sheet);
    unset($sheet);

}
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objPHPExcel->setActiveSheetIndex(0);
$file='x';

$filename = $file."_".@date("Y-m-d_H-i",time()).'.xlsx';
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'.$filename.'"');
header('Cache-Control: max-age=0');
$objWriter->save('php://output');  //send it to user, of course you can save it to disk also!
exit; //done.. exiting!

0

1
现在是 https://github.com/PHPOffice/PhpSpreadsheet/blob/master/samples/Basic/43_Merge_workbooks.php - Ehcnalb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接