Сначала я попытался использовать функцию setActiveSheetIndexByName(), чтобы установить активный лист и вызвать метод записи \PhpOffice\PhpSpreadsheet\Writer\Csv, но нет удача. Каким-то образом писатель сохранил первый рабочий лист. Я пробовал индексировать по имени, по номеру, но разница немаленькая.
Теперь есть код, с которым я экспериментирую:
Код: Выделить всё
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader("Xlsx");
$reader->setReadDataOnly(true);
$spreadsheet = $reader->load('infile.xlsx');
foreach($spreadsheet->getAllSheets() as $sheet)
{
$spreadsheet->setActiveSheetIndexByName($sheet->getTitle());
$activeSheet = $spreadsheet->getActiveSheet();
$title = $activeSheetgetTitle();
echo $title . PHP_EOL;
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Csv($spreadsheet);
$writer->save($title . '.csv', 2);
}
Вывод файловой системы почти такой, как я ожидал: множество файлов CSV с собственными именами.
/>Однако содержание то же самое. Я имею в виду постепенно то же содержание, что и первый рабочий лист. Независимо от того, изменю ли я активный лист.
Мой вопрос: как сохранить файл CSV на основе определенного листа?
Подробнее здесь: https://stackoverflow.com/questions/792 ... eet-as-csv
Мобильная версия