Я использую SQL Server 2012 , PHP 7.2 и PHPSpreadsheet , чтобы создать файл xlsx из 7 листов каждыйдля отчета для другого типа объекта.Все мои данные хранятся в той же базе данных, в той же таблице, и типы объектов перечислены как значения в одном из полей.Итак, я начинаю с:
$sql = "SELECT Field1, Field2, Facility FROM dbo.table WHERE date
BETWEEN '$from' AND '$to'";
$query = sqlsrv_query( $conn, $sql );
$row = 2;
while( $data = sqlsrv_fetch_object( $query )) {
$spreadsheet->setActiveSheetIndex(0);
$spreadsheet->getActiveSheet()
->setCellValue('A'.$row , $data->Facility)
->setCellValue('B'.$row , $data->Field1)
->setCellValue('C'.$row , $data->Field2);
$row++; }
$spreadsheet->getActiveSheet()
->setCellValue('A1' , 'Facility Type')
->setCellValue('B1' , 'Facility ID')
->setCellValue('C1' , 'Location');
Однако мне нужно вернуть только записи, где Facility = 'Facility1'
на первом листе, а затем только записи, где Facility = 'Facility2'
на 2-м листе и так далее.Я знаю, как написать это с отдельными запросами SQL, но 7 запросов SQL в одном файле php показались излишними.Кроме того, когда я попробовал это, он возвращал каждый лист после 1-го с только заголовками и пустыми строками.
Есть ли способ, которым я могу сделать это, добавляя что-то к моему оператору while перед каждым листом?Или есть лучший способ сделать это?