Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.09.2018, 16:33   #1
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию PHPExcel отправляем файл на скачивание

использую библиотеку PHPExcel бля согдания файла если сохранять на сервере все работает замечательно
Если выплевывать файл в пользователя в файле куча непонятных символов
В проэкте и БД кодировка UTF - 8 без BOM

Код:
<?php
//файл с подключением к БД
include_once("conected.php");
// Подключаем класс для работы с excel
require_once('OffisReports/PHPExcel/Classes/PHPExcel.php');
// Подключаем класс для вывода данных в формате excel
require_once('OffisReports/PHPExcel/Classes/PHPExcel/Writer/Excel5.php');

	function ReportFull($connect){
		// массив стилей
		$style_wrap = array(
			// рамки
			'borders'=>array(
				// внешняя рамка
				'outline' => array(
					'style'=>PHPExcel_Style_Border::BORDER_THIN,
					'color' => array(
						'rgb'=>'000000'
					)
				),
				// внутренняя
				'allborders'=>array(
					'style'=>PHPExcel_Style_Border::BORDER_THIN,
					'color' => array(
						'rgb'=>'000000'
					)
				)
			)
		);
		$i=3;
		$Ptable;
		$sheet;		
		// Создаем объект класса PHPExcel
		$xls = new PHPExcel();
		// Устанавливаем индекс активного листа
		$xls->setActiveSheetIndex(0);
		// Получаем активный лист
		$sheet = $xls->getActiveSheet();
		// Подписываем лист
		$sheet->setTitle('Все товары');
		// Вставляем текст в ячейку A1
		$sheet->setCellValue("A1", "Все товары представленные на сайте");
		//обединение ячеек
		$sheet->mergeCells('A1:F1');
		// Выравнивание текста
		$sheet->getStyle('A1')->getAlignment()->setHorizontal(
			PHPExcel_Style_Alignment::HORIZONTAL_CENTER);	
		//задаем размеры ячеек	
		$sheet->getColumnDimension('A')->setWidth(15);
		$sheet->getColumnDimension('B')->setWidth(20);
		$sheet->getColumnDimension('C')->setWidth(11);
		$sheet->getColumnDimension('D')->setWidth(17);
		$sheet->getColumnDimension('E')->setWidth(9);	
		$sheet->getColumnDimension('F')->setWidth(13);	
		//Заголовок таблицы	
		$sheet->setCellValueByColumnAndRow( 0,$i,"Артикул");
		$sheet->setCellValueByColumnAndRow( 1,$i,"Название");
		$sheet->setCellValueByColumnAndRow( 2,$i,"Размер");
		$sheet->setCellValueByColumnAndRow( 3,$i,"Дата постовки");
		$sheet->setCellValueByColumnAndRow( 5,$i,"Кол-во");	
		$sheet->setCellValueByColumnAndRow( 4,$i,"Цена");
		$sheet->getStyle("A2:F2")->getAlignment()->setHorizontal(
			PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
		//Запрос к БД
		$Ptable=$connect->query("
			SELECT * FROM product pr INNER JOIN psize ps ON pr.ID_Size = ps.ID_Size
						JOIN product_name prn ON pr.ID_Product_Name = prn.ID_Product_Name" );
		//Заполняем таблицу				
		while ($row = $Ptable -> fetch_assoc()){
			$i++;
			$sheet->setCellValueByColumnAndRow( 0,$i," ".$row['Ven_Code']);
			$sheet->setCellValueByColumnAndRow( 1,$i,$row['Name_Product']);
			$sheet->setCellValueByColumnAndRow( 2,$i,$row['Size_Name']);
			$sheet->setCellValueByColumnAndRow( 3,$i,$row['Date_of_delivery']);
			$sheet->setCellValueByColumnAndRow( 4,$i,$row['CountPr']);	
			$sheet->setCellValueByColumnAndRow( 5,$i,$row['Price']);
		};
		$i++;
		//считаем сумму
		$sheet->mergeCells("A".($i).":E".($i));
		$sheet->setCellValueByColumnAndRow( 0,$i,"На общую стоимость:");
		$sheet->setCellValueByColumnAndRow(5,$i,"=SUM(E4:E".($i-1).")*SUM(F4:F".($i-1).")");
		//рамка для таблици
		$sheet->getStyle("A3:F".($i))->applyFromArray($style_wrap);

		// Выводим HTTP-заголовки
		header ( "Expires: Mon, 1 Apr 1974 05:00:00 GMT" );
		header ( "Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT" );
		header ( "Cache-Control: no-cache, must-revalidate" );
		header ( "Pragma: no-cache" );
		header ( "Content-type: application/vnd.ms-excel" );
		header ( "Content-Disposition: attachment; filename=matrix.xls" );

		// Выводим содержимое файла
		 $objWriter = new PHPExcel_Writer_Excel5($xls);
		 $objWriter->save('php://output');
		// $objWriter->save('C:/xampp/htdocs/MyHost/OffisReports/1.xls'); 
	};

	echo ReportFull($connect);
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
phpexcel dbalor PHP 3 26.07.2018 14:55
PHPExcel и сквозные строки Рустам PHP 2 10.10.2017 13:38
PHPexcel в PHP7 Demedrol PHP 2 20.09.2017 08:41
Выгрузить данные из базы и отдать клиенту файл на скачивание Maxx PHP 2 04.09.2014 11:09
отдать файл на скачивание marwell. PHP 5 04.05.2014 23:20