Формируем отчет в Excel на PHP

Приведу пример, как это было сделано мной для сайта по продаже билетов, из которого будет понятно что и как делается. Получаем массив, и затем этот массив раскладываем по ячейкам, делаем заголовки отчета.

Пример:

<?php
$reserv_seat = $pages->find('template=purchased_tickets, id_bus=' . $selected_id_bus . ', date_depart=' . $selected_date . ',sort=seat');
//echo '<pre>'; print_r($arr_reserv_seat); echo '</pre>';
$arr_reserv_seat = [];
foreach ($reserv_seat as $reserv_seat_item) {
    $arr_reserv_seat[] = array(
        'seat' => $reserv_seat_item->seat,
		'pay_or_booking' => $reserv_seat_item->pay_or_booking,
		'confirm' => $reserv_seat_item->confirm,
		'passenger' => $reserv_seat_item->passenger,
		'passenger_doc' => $reserv_seat_item->passenger_doc,
		'operator' => $reserv_seat_item->operator,
        );
}

$title = array
(
'Отчет по маршруту ' . $selected_bus . ' - ' . $selected_date . ' ' . $selected_time,
'',
);

$headers = array(
	array(
		'seat' => 'Место',
		'pay_or_booking' => 'Куплен/Забронирован',
		'confirm' => 'Статус подтверждения',
		'passenger' => 'Пассажир',
		'passenger_doc' => 'Документ',
		'operator' => 'Оператор',
	),    
);

header('Content-Type: text/csv; charset=utf-8' );
header(sprintf( 'Content-Disposition: attachment; filename=Отчет по маршруту - %s.csv', date( 'dmY-His' ) ) );
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public'); 

$buffer = fopen('php://output', 'w');
foreach ($title as $line) {
    $line = mb_convert_encoding($line, 'windows-1251', 'utf-8');
    fputcsv($buffer,explode(',',$line));
}
foreach($headers as $val) { 
    $val = mb_convert_encoding($val, 'windows-1251', 'utf-8');
	fputcsv($buffer, $val, ';'); 
} 
foreach($arr_reserv_seat as $val) { 
    $val = mb_convert_encoding($val, 'windows-1251', 'utf-8');
	fputcsv($buffer, $val, ';'); 
} 
fclose($buffer); 
exit();
?>

 

Так же с моим портфолио можно ознакомиться на любой из представленной социальной сети, на своих страницах я публикую посты о своих работах, заданиях и целях.

Для связи со мной можно воспользоваться любой социальной сетью,
или написать на почту:

С моим резюме можно ознакомиться по ссылке:

© 2020-2024 Портфолио Юдина Александра г.Пенза. Все права защищены