【问题标题】:PHPExcel, Copy sheet from one to another xls document with stylePHPExcel,将表格从一个复制到另一个带有样式的xls文档
【发布时间】:2016-02-06 14:48:31
【问题描述】:

我需要使用其他文件列表创建一个 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);

因此,工作表被复制,除了单元格的样式:边框、字体、文本大小、文本颜色。如何与风格一起移动?

谢谢。

【问题讨论】:

  • 好像this 是你的问题。

标签: php excel phpexcel xls


【解决方案1】:

PHPExcel 中为此内置了一种方法:addExternalSheet(),它将样式以及内容从一个工作簿复制到另一个工作簿。

在PHPExcel的/Examples文件夹中有一个脚本(43mergeWorkbooks.php)来演示它的使用

【讨论】:

  • 我在 /Examples 文件夹 (40duplicateStyle.php) 中找不到脚本 (43mergeWorkbooks.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!

【讨论】:

    【解决方案3】:

    PHPExcel 库已弃用。他们建议所有用户都应该迁移到其直接继承者 PhpSpreadsheet。

    在以下链接中,您将找到如何将工作表从一个工作簿复制到另一个工作簿的示例。

    https://github.com/PHPOffice/PhpSpreadsheet/blob/develop/samples/Basic/43_Merge_workbooks.php

    猜你喜欢
    • 2014-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    • 2014-09-22
    • 2012-10-16
    相关资源
    最近更新 更多