【问题标题】:PHPExcel - Combine two file in onePHPExcel - 将两个文件合二为一
【发布时间】:2015-07-16 19:58:15
【问题描述】:

我有两个 xlsx 文件:first.xlsx 和 second.xlsx,我会将这两个文件合二为一,并为最后一个附加文件的第二部分着色 (second.xlsx)。我能做什么?

【问题讨论】:

    标签: php phpexcel xls xlsx


    【解决方案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');
    

    【讨论】:

    • 抱歉,我不需要用两个工作表创建一个文件。我将创建一个文件,其中包含文件“one.xlsx”中的所有单元格和文件“two.xlsx”中的所有单元格。例如:third_fil.xlsx =(第一个文件中的文本)+(第二个文件中的文本)
    • 如果您只想从一个文件中获取单元格数据并将其复制到另一个文件中,则加载这两个文件并遍历单元格,读取值、样式等并将它们复制到您想要的位置。 ..但没有什么神奇的方法
    • 你能给我举个例子吗?我之前从未使用过 PHPExcel 库
    • 此代码返回两个错误:“注意:未定义属性:PHPExcel::$getActiveSheet”和“致命错误:在非对象上调用成员函数 fromArray()”
    • Fixed.... getActiveSheet().... 不是 getActiveSheet..... 请开始阅读 PHPExcel 文档并查看示例
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-05
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多