Создание xls-файлов средствами PHP

  • Не нравится
  • +6
  • Нравится
Создание xls-файлов средствами PHP

Столкнулся с проблемой создания xls-отчетов "на лету". Поиски в Google приводили в основном на очень огромные классы... Да, там много функций, но мне надо что - то простенькое)


Вот мое решение:


function xlsBOF() {
echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
return;
}

function xlsEOF() {
echo pack("ss", 0x0A, 0x00);
return;
}

function xlsWriteNumber($Row, $Col, $Value) {
echo pack("sssss", 0x203, 14, $Row, $Col, 0x0);
echo pack("d", $Value);
return;
}

function xlsWriteLabel($Row, $Col, $Value ) {
$L = strlen($Value);
echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);
echo $Value;
return;
}


C помощью этих функций можно легко и просто создавать xls-файлы, например, так:

header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");;
header("Content-Disposition: attachment;filename=list.xls");
header("Content-Transfer-Encoding: binary ");

xlsBOF(); //начинаем собирать файл
/*первая строка*/
xlsWriteLabel(1,0,"Название");
/*вторая строка*/
xlsWriteLabel(2,0,"№п/п");
xlsWriteLabel(2,1,"Имя");
xlsWriteLabel(2,2,"Фамилия");
/*третья строка*/
xlsWriteNumber(3,0,"1");
xlsWriteLabel(3,1,"Петр");
xlsWriteLabel(3,2,"Иванов");
/*...*/
xlsWriteNumber(32,0,"30");
xlsWriteLabel(32,1,"Иван");
xlsWriteLabel(32,2,"Петров");

xlsEOF(); //заканчиваем собирать


На выходе получаем простой xls-файл с именем list.xls.

Вот и все)))
Это просто :)

Удачи)

Коментарии

Аватар
1_and_0, спасибо) Не знал :)
  
Аватар
Не придумывайте велосипедов, у вас они всё равно не качественные.
phpexcel.codeplex.com
  
Аватар
buzzman, попробуйте дописать

header( "Content-type: text/css; charset=utf-8" );


Ну, или виндовс 1251
  
Аватар
У меня не выходит создание файла, если в данных есть кириллица. Кодировка UTF-8. Есть предположения, как это можно поправить?
  
Аватар
  • Jamaal
  • Группа: Гости
пхп мало дружит с вордом. Но попробую.