Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 更新.xlsx文件_Php_Phpexcel - Fatal编程技术网

Php 更新.xlsx文件

Php 更新.xlsx文件,php,phpexcel,Php,Phpexcel,我正在使用PHPExcel_1.8.0。 我有许多输入文件,我想读取每个文件,并将它们运行时保存到单个输出文件中。 我已经尝试过了,但是每个文件的输出文件都被覆盖。 让我简单解释一下: 我有5个文件,其中有5个不同员工的记录,我想通过php将这些记录放在一个文件中。我已经设置了一个循环,所以输出文件只保存了最后一条员工记录,因为被覆盖了。 我想在php中添加类似append的内容。 这是我的代码: <?php error_reporting(E_ALL); ini_set('dis

我正在使用PHPExcel_1.8.0。 我有许多输入文件,我想读取每个文件,并将它们运行时保存到单个输出文件中。 我已经尝试过了,但是每个文件的输出文件都被覆盖。 让我简单解释一下: 我有5个文件,其中有5个不同员工的记录,我想通过php将这些记录放在一个文件中。我已经设置了一个循环,所以输出文件只保存了最后一条员工记录,因为被覆盖了。 我想在php中添加类似append的内容。 这是我的代码:

    <?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
define('EOL', (PHP_SAPI == 'cli') ? PHP_EOL : '<br />');
date_default_timezone_set('Europe/London');
require_once 'index.php';

require_once dirname(__FILE__) . '/Classes/PHPExcel.php';
$dirlist = dirToArray('input');
foreach ($dirlist AS $value) {
    $info = new SplFileInfo($value);
    $vFileExtension = $info->getExtension();
    if ($vFileExtension == 'xlsx' || $vFileExtension == 'xls') {
        $inputFileName = "input/".$value;
        $objReader = new PHPExcel_Reader_Excel5();
        $objPHPExcel = $objReader->load($inputFileName);
        $sheetData = $objPHPExcel->getActiveSheet()->toArray(null, true, true, true);
        $objPHPExcel = new PHPExcel();
        $i = 1;
        foreach ($sheetData AS $key => $row) {
            foreach ($row AS $index => $rec) {
                $objPHPExcel->getActiveSheet()->setCellValue($index . $i, $newtext);
            }
            $i++;
        }
        $objDrawing = new PHPExcel_Worksheet_HeaderFooterDrawing();
        $objDrawing->setName('PHPExcel logo');
        $objDrawing->setPath('./images/phpexcel_logo.gif');
        $objDrawing->setHeight(36);
        $objPHPExcel->getActiveSheet()->getHeaderFooter()->addImage($objDrawing, PHPExcel_Worksheet_HeaderFooter::IMAGE_HEADER_LEFT);
        $objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE);
        $objPHPExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4);
        $objPHPExcel->getActiveSheet()->setTitle('Data');
        $objPHPExcel->setActiveSheetIndex(0);
        $callStartTime = microtime(true);
        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
        $objWriter->save("output/result.xlsx");
        $callEndTime = microtime(true);
        $callTime = $callEndTime - $callStartTime;
        $callStartTime = microtime(true);
        echo $value . ' has been generated!' . EOL;
    }
}
?>


问题#1。停止依赖扩展,让PHPExcel的IOFactory load()方法识别上传文件的实际格式问题#2。不使用PHPExcel_Reader_Excel5()如果该文件确实是OfficeOpenXML格式的.xlsx文件,则使用PHPExcel_Reader_Excel2007()-IOFactory load()将为您解决此问题#3。如果要将所有5个对象合并到一个新的电子表格文件中,请在循环之前实例化新的PHPExcel对象,并在循环之后保存它谢谢您的合作#1我只有.xlsx文件#2我已经将该文件包含在iFactory中,但它不起作用#3我现在尝试了最后一个文件,但不幸的是,这个文件也不起作用#1-如果你只有
.xlsx
文件,为什么还要允许
.xls
呢。。。。让PHPExcel识别文件本身更安全。。。如果您的文件是正版
.xlsx
文件,则
PHPExcel\u Reader\u Excel5
读取器应引发异常。。。。使用
IOFactory::load()
可以消除这种情况,因为PHPExcel将通过测试文件而不是假设来选择正确的读取器