【问题标题】:PHPExcel : Create multiple sheets from different html filesPHPExcel:从不同的 html 文件创建多个工作表
【发布时间】:2016-05-24 10:55:18
【问题描述】:

我们正在使用 PHP Excel 库来创建包含多个工作表的 excel 文件。 我们需要在多个工作表中加载多个 html 页面内容。 我们的强文本已经成功地实现了一张来自 HTML 的动态数据表。 当我添加第二张工作表时,它会返回仅添加最新工作表的 excel。

Below is code

        <?php 
                require_once './PHPExcel/Classes/PHPExcel.php';
                require_once './PHPExcel/Classes/PHPExcel/IOFactory.php';
                   // Create new PHPExcel object
                    $objPHPExcel = new PHPExcel();
                    //Create a first sheet, representing sales data
                    $objReader = PHPExcel_IOFactory::createReader('HTML');


                    $objPHPExcel->setActiveSheetIndex(0);
                    //$objPHPExcel->getActiveSheet()->setCellValue('A1', 'aaaaaaa');
                    $objPHPExcel= $objReader->load('./report_html/report1.html');
                    // Rename sheet
                    $objPHPExcel->getActiveSheet()->setTitle('Sheet1 ');

                    //----------------------------------------

                    $objWorkSheet=$objPHPExcel->createSheet(1);

                    // Add some data to the second sheet, resembling some different data types
                    $objPHPExcel->setActiveSheetIndex(1);
                    // Rename 2nd sheet
                    //$objPHPExcel->getActiveSheet()->setCellValue('A1','bbbbbbb ');
                    $objPHPExcel= $objReader->load('./report_html/report2.html');
                    $objPHPExcel->getActiveSheet()->setTitle('sheet2');

                    //$objWorkSheet->setTitle('Second sheet');

                    header('Content-Type: application/vnd.ms-excel');
                    header('Content-Disposition: attachment;filename="report.xls"');
                    header('Cache-Control: max-age=0');

                    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
                    $objWriter->save('php://output');

                ?>

【问题讨论】:

    标签: php html google-sheets phpexcel


    【解决方案1】:

    load() 方法旨在将整个文件加载到新的 PHPExcel 对象中,而不是将新工作表加载到现有的 PHPExcel 对象中,因此当您第二次调用它时,您就是 替换你在第一次加载时已经拥有的东西,而不是添加它。

    我推荐的选项是将第二个文件加载到第二个 PHPExcel 对象中,然后使用 addExternalSheet() 方法将工作表传输到您的第一个 PHPExcel 对象,这会将其添加为第二个工作表.....此机制是专门为确保样式中没有冲突而编写的,并且新工作表保留其所有现有样式。

    另一种方法是使用 Reader 的 loadIntoExisting() 方法,当您加载 HTML 文档时,这不会导致任何样式冲突。

    【讨论】:

    • 感谢您的回答。我已经使用 addExternalSheet setActiveSheetIndex(0); 更新了 sheet2 的代码$objPHPExcel2= $objReader->load('./report_html/report2.html'); $objWorkSheet = $objPHPExcel2->createSheet(0); $objPHPExcel->addExternalSheet($objWorkSheet); $objWorkSheet->setTitle('第二张'); ?> 它创建工作表但不向其附加数据请指导
    • $objWorkSheet = $objPHPExcel2-&gt;createSheet(0);$objPHPExcel2 中创建一个新的空工作表,然后您尝试将该新的空工作表添加到$objPHPExcel..... 为什么要创建一个新的空工作表?我以为你想复制现有的工作表
    • 谢谢!!我知道你想说什么..Gr8 帮助!更新了这样的代码code $objPHPExcel2->setActiveSheetIndex(0); $objPHPExcel2= $objReader->load('./report_html/report_3CB_24.html'); $objWorkSheet=$objPHPExcel2->getActiveSheet()->setTitle('sheet2'); $objPHPExcel->addExternalSheet($objWorkSheet);这已附加了带有 html 的第二张纸。但是现在面对一些从 html 打印在 excel 中的垃圾,你能帮忙解决一下吗..
    • 因为我不知道你的文件是什么样的,或者生成的文件应该包含什么,或者当你这样做时它会是什么样子,我几乎不可能说......除了$objPHPExcel2-&gt;setActiveSheetIndex(0); 应该在$objPHPExcel2 存在之前调用它时触发错误
    • 嗨@Mark,我从html创建了多张工作表。但是还有一个问题,我们可以使用变量直接写在表格中,意思是不是读取html然后在excel中写入,我们可以直接在excel表格中写入php变量内容吗?这将有助于在 excel 中获得一些基本的 html 格式。请举个例子
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-17
    相关资源
    最近更新 更多