如何解决spout php 从 xlsx 读取新列,然后插入到现有文件 xlsx
当名称相同时,我想从 testinput.xlsx 文件更新 test.xlsx 文件的列。
我有这些
我想要这个
但我真的很困惑,我想我在迭代中迷失了$writer->addRow($row);
<?PHP
require_once 'spout/src/spout/Autoloader/autoload.PHP';
use Box\spout\Reader\Common\Creator\ReaderEntityFactory;
use Box\spout\Writer\Common\Creator\WriterEntityFactory;
$existingFilePath = 'test.xlsx';
$existingFilePath2 = 'testinput.xlsx';
$newFilePath = 'testnew.xlsx';
// we need a reader to read the existing file...
$reader = ReaderEntityFactory::createReaderFromFile($existingFilePath);
$reader->open($existingFilePath);
$reader2 = ReaderEntityFactory::createReaderFromFile($existingFilePath2);
$reader2->open($existingFilePath2);
//$reader->setShouldFormatDates(true); // this is to be able to copy dates
// ... and a writer to create the new file
$writer = WriterEntityFactory::createWriterFromFile($newFilePath);
$writer->openToFile($newFilePath);
// let's read the entire spreadsheet
foreach ($reader->getSheetIterator() as $sheetIndex => $sheet) {
// Add sheets in the new file,as you read new sheets in the existing one
if ($sheetIndex !== 1) {
$writer->addNewSheetAndMakeItCurrent();
}
foreach ($sheet->getRowIterator() as $rowIndex => $row) {
$name = $row->getCellAtIndex(0);
$name_index = 0;
$data = $row->getCellAtIndex(1);
$data_index = 1;
$input = $row->getCellAtIndex(2);
$input_index = 2;
echo "<br><br>rowIndex = {$rowIndex} name = {$name} <br>";
foreach ($reader2->getSheetIterator() as $sheetIndex2 => $sheet2) {
foreach ($sheet2->getRowIterator() as $rowIndex2 => $row2) {
$name2 = $row2->getCellAtIndex(0);
$name_index2 = 0;
$newinput2 = $row2->getCellAtIndex(1);
$newinput_index2 = 1;
if ($name == $name2) {
$temp_rowIndex = intval($rowIndex)+1;
$temp_rowIndex2 = intval($rowIndex2)+1;
echo "rowIndex = {$rowIndex} name = {$name} ---- rowIndex2 = {$rowIndex2} name2 = {$name2} <br>";
$row->setCellAtIndex(WriterEntityFactory::createCell($newinput2),3);
}
}
}
// write the edited row to the new file
$writer->addRow($row);
}
}
$reader->close();
$writer->close();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。