【问题标题】:PHPSpreadsheet to update an existing file writes only the last record of the queryPHPSpreadsheet 更新现有文件只写入查询的最后一条记录
【发布时间】:2019-08-03 09:06:55
【问题描述】:

您好,我正在尝试使用带有 setActiveSheetIndexByName(sheetname) 的 phpspreadsheet 和带有引用和值的 setcellvalue 编写现有的 xlsx 文件,但它只更新最后一条记录。在这上面花了12个多小时。

我尝试了 foreach 而不是 while 并使用了一个计数器来增加,但没有一个工作。

<?php
include_once('db.php');
$prospect = $_REQUEST['prospect'];
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

            $sql1 = mysqli_query($db,"select filename,sheetname, row, responsecol,compliancecol,response, compliance from spreadsheet where `prospect`='$prospect' and response <>'' order by row");    
            //$row=1;           
            while($row1 = mysqli_fetch_assoc($sql1))
            {
                $filename= $row1['filename']; //test.xlsx
                $sheetname= $row1['sheetname']; // mysheet
                $responsecol= $row1['responsecol'].$row1['row']; //D1
                $response= $row1['response']; //response
                $compliancecol= $row1['compliancecol'].$row1['row']; //C1
                $compliance= $row1['compliance']; //compliance

                $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($filename);
                $spreadsheet->setActiveSheetIndexByName($sheetname)
                                ->setCellValue($compliancecol,$compliance)
                                ->setCellValue($responsecol,$response); 
                                //$row++;
            }

$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');        
$writer->save("newfile.xlsx");
exit;
?>

我希望 mysqli 结果中的每一行都用值更新每个参考单元格。

【问题讨论】:

    标签: loops while-loop phpspreadsheet


    【解决方案1】:

    最简单的方法是将您的 MySQL 查询设置为 1。这仅从您的数据中获取一个值。如果你是最后一个,你应该对 DESC 进行排序。

    $sql1 = mysqli_query($db,"select filename,sheetname, row, responsecol,compliancecol,response, compliance from spreadsheet where `prospect`='$prospect' and response <>'' order by row DESC LIMIT 1"); 
    

    【讨论】:

      猜你喜欢
      • 2015-06-02
      • 2021-02-28
      • 2013-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多