Экспорт в excel. Чем пользоваться?

ManManovich

Новичок
Здравствуйте. Встала задача формировать к заказу счёта, накладной. Дали образец, а в нём всё как полагается, рамки, объединение ячеек. Почитал по интернету но так ни на одном решении не остановился. Среди всего мощно выглядит Spreadsheet_Excel_Writer, но на оф сайте последняя версия за 2009, что меня несколько смущает. (а ещё он по ходу не просто класс а юниксовое программное обеспечение) И так вопрос: какой библиотекой посоветуете воспользоваться для таких целей. И, если не сложно вкратце рассказать, то почему.

Может какой хороший мануал на тему посоветуете?
 
Почему именно в excel? Можно ведь счёт и накладную прямо в HTML выводить. Какая разница, откуда печатать.
 
Почему именно в excel? Можно ведь счёт и накладную прямо в HTML выводить. Какая разница, откуда печатать.
Это мысль, но я уточнил, и нужен ексель. Но вообще, там не только печатать, там ещё и заказчику отсылать. Документы будут генерироваться в бэкэнде, администратором.

Предложенное флопик'ом, кажется, надо откомпилить и установить на сервер. Сайт на хостинге, так что похоже не пойдёт.

Поковырял ещё Нашёл мощную штуку, но с ней голову сломаешь и писанины много получится. http://phpexcel.codeplex.com/
И очень простой вариант Из PHP в Excel: работа с COM-объектами (и иже с ними, там несколько топиков на тему есть.) Но не нашёл как используя этот способ объединять ячейки

Наверно, если ни кто не подскажет как работая с COM объектами объединять несколько ячеек, то тему можно закрыть. Как обычно ударился в панику , пошёл спрашивать, а потом нашёл ответ :(
 
И очень простой вариант Из PHP в Excel: работа с COM-объектами (и иже с ними, там несколько топиков на тему есть.) Но не нашёл как используя этот способ объединять ячейки

Наверно, если ни кто не подскажет как работая с COM объектами объединять несколько ячеек, то тему можно закрыть. Как обычно ударился в панику , пошёл спрашивать, а потом нашёл ответ :(
Работает только под виндой же. И с установленным экселем.
 
1. Сохраняешь ексельник в html офисовским говноэкспортом.
2. В этой каше говна проставляешь свои метки.
3. Скриптом заменяешь метки на что надо, отдаешь прям этот самый хтмл с расширением .xls и Content-Type: application/octet-stream
4. ??
5. PROFIT

(да, есть небольшая вероятность, что на каком-нибудь кастрированном екселе или опенофисом допустим, не откроется).
 
Я обычно вообще просто голый HTML с табличкой отдаю с контент-тайпом application/vnd.ms-excel - в большинстве случаев, хватает.
 
Это мысль, но я уточнил, и нужен ексель. Но вообще, там не только печатать, там ещё и заказчику отсылать. Документы будут генерироваться в бэкэнде, администратором.

Заказчику можно отсылать в письме. В смысле, прямо в теле письма. Там даже печать синюю можно поставить автоматом (мы так и делаем). Скажите это администратору - может он передумает. В эксел-то ведь ему руками печать пихать придётся.
 
Когда последний раз сталкивался с Spreadsheet_Excel_Writer там с кодировками не все в порядке было, по крайней мере в OpenOffice.
Тогда извращнулся и сгенерил php-шкой python скрипт и выполнил его, тот генерил exel, после чего прочитал созданный файл readfile и отдал в браузер.
В питоне юзался pyExcelerator.

Вот такой вот изврат, но на тот момент все работало на ура.
 
Ух ты. Не знал про то, что есть сишный экстеншн.
Потестирую. Очень не хватает именно нормальной сишной библиотеки.
 
Жесть. То, что надо. Где вы раньше были??))

Для огромных отчетов, в которых нужно сохранять форматирование, раньше использовал такой вариант.

Сохранял исходный документ в формате Excel XML 2003.
Открывал его через DOMDocument, добавлял ряды через cloneNode, писал в них значения.
Отдавал в браузер с расширением XLS и нужными заголовками.

Скорость работы, по сравнению с PHPExcel, огромная. 200-500 тысяч рядов выгрузить не проблема.
Но, конечно, на C лучше.
 
Спасибо всем зща ответы. В целом и помогло и и по-своему решил делать. Пользовался в результате phpexcel. Оказалось там всё предельно просто. Не надо описывать все поля где сколько объединить, стили итп. Можно взять шаблон, подгрузить его
PHP:
	$excelclass = 'PHPExcel/IOFactory.php';
	$classfile = $path.$excelclass;
	include_once $classfile;
	$pExcel = PHPExcel_IOFactory::load($path."template.xls");
	$pExcel->setActiveSheetIndex(0);
	$aSheet = $pExcel->getActiveSheet();
//вставляем значения в ячейки
	$aSheet->setCellValue('D6',$otherdata['organ_i_vl']);
	$aSheet->setCellValue('D7',$otherdata['a_o']);

Далее вставляем строки, меняем стили у всавленных строк, если надо.

PHP:
$aSheet->insertNewRowBefore('15',($zayaCnt-1));

if ($i < ($zayaCnt-1)){
		$aSheet->getRowDimension($row)->setRowHeight(70);
		$aSheet->getStyle('A'.$row.':M'.$row)->applyFromArray($styleArray);
	}
И по завершению пишем в файл

PHP:
$excelclass2 = $path."PHPExcel/Writer/Excel5.php";
		include $excelclass2;
		$objWriter = new PHPExcel_Writer_Excel5($pExcel);
		$path1file = 'assets/files/'.strftime("%d-%m-%Y--%H-%M-%S", time()).'.xls';
		if (file_exists($path1file)){
			if (unlink($path1file)) $objWriter->save($path1file);
		}
		else{
			$objWriter->save($path1file);
		}
		$output .= '<a href="'.$path1file.'">Чек товарный</a><br/>';

Это на случай если кому когда интересно станет. Для больших объёмов, конечно не пойдёт, но квитанцию сгенерировать в самый раз. Что приятно порадовало, проблем с кодировкой нет, и можно не заморачиваться, какой файл открывать. Можно 2003, 2007 в последствии ему без разницы в какой скажешь, в такой и сохранит.
 
ManManovich
угу,им и пользуюсь
только багов немерянно, задолбался этого калеку лечить
 
Сверху