использую библиотеку 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);