Понадобится пакет Spreadsheet_Excel_Writer (спасибо разработчику), он инсталируется в PHP через PEAR, самое простое скачать с
www.kompvp.ru/Spreadsheet.rar (домен kompvp.ru зарегин на мой домашний комп, потому если чё не качается - просто комп выключен, или прошло много лет и я уже все это поудалял - нужно искать в Инете). И выложить в вашу папку с PHP (при условии что Вы установили PEAR, т.е. запусками файл go-pear.bat и отвечали там на вопросы), а потом запустить файл Spreadsheet.bat который инсталлирует в систему Spreadsheet_Excel_Writer.
файл index.php (у меня на компе это
http://www.kompvp.ru/test/index1.php)
<?php
//Получаем данные
$name[0]="Name1";
$name[1]="Name2";
$name[2]="Name3";
$kol[0]=56;
$kol[1]=22;
$kol[2]=37;
//Имя файла
$filename=time();
//Внедрение PEAR::Spreadsheet_Excel_Writer по факту расположен в папке с PHP\PEAR\Spreadsheet\Excel
include_once("Spreadsheet/Excel/Writer.php");
//Создаём книгу Excel
$xls =& new Spreadsheet_Excel_Writer('./tmp/'.$filename.'.xls');
//указываем папку в которую будем сохранять файл, т.е. в каталоге где лежит индексный файл есть папка tmp (разумеется с полным доступом для гостей)
$xls->setTempDir('./tmp');
// Добавление листа к файлу с именем текущей датой (это в низу листа надпись)
$sheet =& $xls->addWorksheet(date("d.m.Y"));
//Заблокируем верхние 2 строки от прокрутки т.к. там будут заголовки
$sheet->freezePanes(array(2, 0));
//Зададим ширину колонок (установим для верхней строки = 0)
$sheet->setColumn(0, 0, 45);//Ширина 1 колонки
$sheet->setColumn(0, 1, 20);//Ширина 2 колонки
//Создадим формат для заголовка
$header =& $xls->addFormat();
$header->setColor('black');//white black Цвет шрифта
$header->setAlign('center');//Расположение в ячейке
$header->setBold();//Жирным
$header->setSize('12');//размер шрифта
//Создадим формат для под заголовка. т.е. и шрифт по меньше и не жирным
$podheader =& $xls->addFormat();
$podheader->setColor('black');//white black Цвет шрифта
$podheader->setAlign('center');//Расположение в ячейке
$podheader->setSize('10');//размер шрифта
//Для цифр, чтоб с права печатались
$number =& $xls->addFormat();
$number->setAlign('right');//Расположение в ячейке
//Заголовок для дальнейшего оббъеденения сделаем одинаковый формат (header) в ячейках которые будем сливать вместе
$sheet->write(0,0, "Выгрузка", $header);
$sheet->write(0,1, "", $header);
//Объеденим 2 ячейки с адресами: колока=0, строка=0 и колонка=0, строка=1
$sheet->mergeCells(0, 0, 0, 1);
//Подзаголовки
$sheet->write(1,0, "Наименование", $podheader);
$sheet->write(1,1, "Количество", $podheader);
//Пишем наш массив
for ( $i=0; $i < count($name); $i++ )
{
$sheet->write(($i+2),0, $name[$i]);
//С форматом number
$sheet->write(($i+2),1, $kol[$i], $number);
}
//Конец листа
$xls->close();
//Дальше как и в прошлом примере откроем новое окно с темже файлом xls.php (его содержание не изменилось)
$exfile="'
http://www.kompvp.ru/test/xls.php?file=".$filename."', '', config='height=10,width=10,scrollbars=1,location=0'";
?>
<script>
window.open(<? echo $exfile; ?>);
</script>