Как загрузить данные из XLSX-файла — знаю, практикую.
Как создать XLSX-файл с нужными данными — знаю, но не практикую.
Как загрузить данные из XLSX-файла, а потом в него же сохранить изменения (вот прям в конкретную ячейку, не трогая других) — не знаю и не могу понять.
Очень прошу разъяснить мне это.
Загружаю и работаю с данными так.
use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
use PhpOffice\PhpSpreadsheet\IOFactory;
$file1 = '123.xlsx';
$Reader = new Xlsx();
$deck_table = $Reader->load($file1);
$deck_table->setActiveSheetIndexByName('Страница 2');
$deck_base = $deck_table->getActiveSheet()->rangeToArray('A1:AO100', '0', true, true, true);
foreach ($deck_base as $key => $value)
{
// в общем, тут длинный цикл, который по очереди меняет данные в нужных ячейках вот таким образом
// $deck_table->getActiveSheet()->setCellValue($key . $result, $aaa);
// и если обратиться к тем ячейкам, то там действительно есть данные
// echo $deck_table->getActiveSheet()->getCell($key . $result)->getValue() . '<br>';
}
// но что мне написать, чтобы потом все эти изменения сохранить в тот же файл, из которого я взял данные?
Попытки использовать методы из этой инструкции провалились:
https://phpspreadsheet.readthedocs.io/en/stable/to.... Словно я могут либо только прочитать, либо только создать.
Код с их главной страницы тоже не позволяет сохранить изменения.
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'Hello World !');
$spreadsheet = $Reader;
$writer = new Xlsx($spreadsheet);
$writer->save('hello world.xlsx');
Файл-то создать запросто. Создаётся.
Но вот как мне сюда:
$writer = new Xlsx($spreadsheet); $writer->save('hello world.xlsx');
— передать мои данные?
Или что вообще надо сделать?