我想读取excel文件并同时将数据写入下一个单元格。
我正在使用 PhpSpreadsheet 库 Github。我尝试过的是
$inputFileType = 'Xlsx';
$inputFileName = 'phones.xlsx';
$sheetname = 'sheet1';
/** Identify the type of $inputFileName **/
$inputFileType = \PhpOffice\PhpSpreadsheet\IOFactory::identify($inputFileName);
/** Create a new Reader of the type that has been identified **/
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
/** Load $inputFileName to a Spreadsheet Object **/
$spreadsheet = $reader->load($inputFileName);
/** Convert Spreadsheet Object to an Array for ease of use **/
$schdeules = $spreadsheet->getActiveSheet()->toArray();
foreach( $schdeules as $single_schedule )
{
echo '<div class="row">';
foreach( $single_schedule as $key => $single_item )
{
if($_REQUEST['inbound_phone_no'] == $single_item){
// echo $key;exit;
// I am trying to write the data using this but nothing is going on.
$spreadsheet->getActiveSheet()->setCellValueByColumnAndRow(0, 3, 'PhpSpreadsheet');
echo '<p class="item">Phone No Exist: ' . $single_item . '</p>';
}else{
echo '<p class="item">' . $single_item . '</p>';
}
}
echo '</div>';
}
exit;
如果请求数据和单元格中的值匹配,我想写入一些值,然后通过在工作表的下一个空单元格中写入 1 或 2 来更新状态。 Excel文件图像是
我是这个图书馆的新手。所以如果这是一个新手问题,请忽略它。我已经研究过这些问题了
在PhpSpreadsheet中读取Xlsx文件 和 如何使用 PHPSpreadsheet 在 Excel 上添加新行
非常感谢对此的帮助。
当 ->load 将 xlsx 加载到内存时,您可以更改内存中副本中的值。
完整的方法是这样的:
$fileExcel = 'load.xlsx';
$target_dir = 'save.xlsx';
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
$spreadsheet = $reader->load($fileExcel);
$sheet = $spreadsheet->getActiveSheet();
$lsValue = $sheet->getCell('A1')->getValue();
$spreadsheet->getActiveSheet()->setCellValueByColumnAndRow(0, 3, 'PhpSpreadsheet');
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
$writer->save($target_dir);
因此在退出之前您需要最后两行来保存文件:
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
$writer->save($target_dir);
注意:
setCellValueByColumnAndRow
现已弃用;请使用 setCellValue
来代替。
这是使用 phpoffice/phpspreadsheet 版本 1.29 读写相同 Xlsx 文件的简单方法:
$inputFileName = "phones.xlsx";
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($inputFileName);
$activeSheet = $spreadsheet->getActiveSheet();
$data = $activeSheet->toArray("", false, false); // the entire sheet as 2D array
// access each row $i, read data from column 3 to new column 4 (zero based index)
for($i=0; $i<count($data); $i++)
{
$readData = $data[$i][3]; // read row $i, column 3 (zero based index)
$activeSheet->setCellValue([5,$i+1], $readData); // write to column 5, row $i+1 (one based index)
}
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
$writer->save($inputFileName); // save to the same file