Skip to content

Instantly share code, notes, and snippets.

@spacebit-official
Created November 17, 2017 00:37
Show Gist options
  • Save spacebit-official/0aea2900d07aaf431a0891b81b7c8f9a to your computer and use it in GitHub Desktop.
Save spacebit-official/0aea2900d07aaf431a0891b81b7c8f9a to your computer and use it in GitHub Desktop.
PHPExcel_db_to_Excel
<?php
header('Content-type: text-html charset=utf-8');
require_once __DIR__ . '/vendor/autoload.php';
require_once __DIR__ . '/conf.php';
require_once __DIR__ . '/class/timer.class.php';
require_once __DIR__ . '/class/Database.class.php';
require_once __DIR__ . '/class/Sql.class.php';
Timer::start();
$price_list = Sql::showParts();
$objPHPExcel = new PHPExcel; // создаем экземпляр класса
$objPHPExcel->setActiveSheetIndex(0); // устанавливаем активный лист
//$objPHPExcel->createSheet(); // создаем еще один лист
$active_sheet = $objPHPExcel->getActiveSheet(); // пулучаем объект активного листа
$active_sheet->setTitle('Прайс-лист'); // устанавливаем название активного листа
$active_sheet->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE); // устанавливаем ориентацию //ORIENTATION_PORTRAIT
$active_sheet->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4); // устанавливаем размер
$active_sheet->getPageMargins()->setTop(2); // получаем доступ к отступам документа // устанавливаем отступы
$active_sheet->getPageMargins()->setRight(0);
$active_sheet->getPageMargins()->setLeft(0);
$active_sheet->getPageMargins()->setBottom(2);
$active_sheet->getHeaderFooter()->setOddHeader('&CШапка нашего прайс-листа'); // получаем доступ к шапке и футеру активного документа // и задаем шапку // &C - центр
$active_sheet->getHeaderFooter()->setOddFooter('&L&B' . $active_sheet->getTitle() . '&RСтраница &P из &N'); // получаем доступ к шапке и футеру активного документа // и задаем футер // &L&B - жирный текст с лева // &R - с права // &P - номер страницы // &N - количество страниц
$objPHPExcel->getDefaultStyle()->getFont()->setName('Arial'); // получаем доступ к настройкам по умолчанию // получаем доступ к шрифтам // устанавливаем шрифт по умолчанию
$objPHPExcel->getDefaultStyle()->getFont()->setSize(8); // получаем доступ к настройкам по умолчанию // устанавливаем размер шрифта
$active_sheet->getColumnDimension('A')->setWidth(7); // получаем доступ к изменению ширины столбца // устанавливаем шируну в N символьных единиц
$active_sheet->getColumnDimension('B')->setWidth(80); // получаем доступ к изменению ширины столбца // устанавливаем шируну в N символьных единиц
$active_sheet->getColumnDimension('C')->setWidth(10); // получаем доступ к изменению ширины столбца // устанавливаем шируну в N символьных единиц
$active_sheet->getColumnDimension('D')->setWidth(100); // получаем доступ к изменению ширины столбца // устанавливаем шируну в N символьных единиц
//////////////////////////////////////////////////////////////
$active_sheet->getRowDimension('1')->setRowHeight(40); // получаем доступ на изменении высоты строки // устанавливаем высоту строки
$active_sheet->mergeCells('A1:D1'); // метод который объединяет ячейки
$active_sheet->mergeCells('A2:D2'); // метод который объединяет ячейки
$active_sheet->mergeCells('A4:C4'); // метод который объединяет ячейки
$date = date('d-m-Y');
$active_sheet->setCellValue('A1','ТЕХНО МИР');
$active_sheet->setCellValue('A2','Компьютеры и комплектующие на любой вкус и цвет');
$active_sheet->setCellValue('A4','Дата создания прайс-листа');
$active_sheet->setCellValue('D4', $date);
$active_sheet->getStyle('D')->getNumberFormat()->getFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX14); // получаем стили ячейки // получаем доступ к типу данных ячейки // устанавливаем тип ячейки
$active_sheet->setCellValue('A6','номер'); // запись в ячейку
$active_sheet->setCellValue('B6','имя');
$active_sheet->setCellValue('C6','цена');
$active_sheet->setCellValue('D6','фото');
//////////////////////////////////////////////////////////////
$row_start = 7;
$i = 0;
foreach ($price_list as $item) {
$row_next = $row_start + $i;
$active_sheet->setCellValue('A' . $row_next, $item['lot_id']);
$active_sheet->setCellValue('B' . $row_next, $item['make']);
$active_sheet->setCellValue('C' . $row_next, $item['price']);
$active_sheet->setCellValue('D' . $row_next, $item['photo']);
$i++;
}
//////////////////////////////////////////////////////////////
$style_wrap = [
'borders' => [
'outline' => [
'style' => PHPExcel_Style_Border::BORDER_THICK
],
'allborders' => [
'style' => PHPExcel_Style_Border::BORDER_THIN,
'color' => [
'rgb' => '696969'
]
],
]
];
$active_sheet->getStyle('A1:D' . ($i + 6))->applyFromArray($style_wrap);
////////////////////////////////////////////////////////////////////////////////////////////////////////////
$style_header = [
'font' => [
'bold' => true,
'name' => 'Times New Roman',
'size' => 20
],
'alignment' => [
'horizontal' => PHPExcel_Style_ALIGNMENT::HORIZONTAL_CENTER,
'vertical' => PHPExcel_Style_ALIGNMENT::VERTICAL_CENTER
],
'fill' => [
'type' => PHPExcel_STYLE_FILL::FILL_SOLID, 'color' => [
'rgb' => 'CFCFCF'
]
]
];
$active_sheet->getStyle('A1:D1')->applyFromArray($style_header);
////////////////////////////////////////////////////////////////////////////////////////////////////////////
$style_slogan = [
'font' => [
'bold' => true, 'italic' => true,
'name' => 'Times New Roman',
'size' => 13,
'color' => [
'rgb' => '8B8989'
]
],
'alignment' => [
'horizontal' => PHPExcel_Style_ALIGNMENT::HORIZONTAL_CENTER,
'vertical' => PHPExcel_Style_ALIGNMENT::VERTICAL_CENTER
],
'fill' => [
'type' => PHPExcel_STYLE_FILL::FILL_SOLID,
'color' => [
'rgb' => 'CFCFCF'
]
],
'borders' => [
'bottom' => [
'style' => PHPExcel_Style_Border::BORDER_THICK
]
]
];
$active_sheet->getStyle('A2:D2')->applyFromArray($style_slogan);
////////////////////////////////////////////////////////////////////////////////////////////////////////////
$style_tdate = [
'alignment' => [
'horizontal' => PHPExcel_Style_ALIGNMENT::HORIZONTAL_RIGHT,
],
'fill' => [
'type' => PHPExcel_STYLE_FILL::FILL_SOLID,
'color' => [
'rgb' => 'CFCFCF'
]
],
'borders' => [
'right' => [
'style' => PHPExcel_Style_Border::BORDER_NONE
]
]
];
$active_sheet->getStyle('A4:C4')->applyFromArray($style_tdate);
////////////////////////////////////////////////////////////////////////////////////////////////////////////
$style_date = [
'fill' => [
'type' => PHPExcel_STYLE_FILL::FILL_SOLID,
'color' => [
'rgb' => 'CFCFCF'
]
],
'borders' => [
'left' => [
'style' => PHPExcel_Style_Border::BORDER_NONE
]
]
];
$active_sheet->getStyle('D4')->applyFromArray($style_date);
////////////////////////////////////////////////////////////////////////////////////////////////////////////
$style_hprice = [
'font' => [
'bold' => true,
'italic' => true,
'name' => 'Times New Roman',
'size' => 10,
],
'alignment' => [
'horizontal' => PHPExcel_Style_ALIGNMENT::HORIZONTAL_CENTER,
],
'fill' => [
'type' => PHPExcel_STYLE_FILL::FILL_SOLID,
'color' => [
'rgb' => 'CFCFCF'
]
],
'borders' => [
'right' => [
'style' => PHPExcel_Style_Border::BORDER_NONE
]
]
];
$active_sheet->getStyle('A6:D6')->applyFromArray($style_hprice);
////////////////////////////////////////////////////////////////////////////////////////////////////////////
$style_price = [
'alignment' => [
'horizontal' => PHPExcel_Style_ALIGNMENT::HORIZONTAL_RIGHT
]
];
$active_sheet->getStyle('A7:D' . ($i + 6))->applyFromArray($style_price);
////////////////////////////////////////////////////////////////////////////////////////////////////////////
header('Content-type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename=simple.xls');
$objWrapper = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); // Генерируем документ с нужной версией
$objWrapper->save('php://output'); // сохраняем готовый сгенерированный документ // отдаем пользователю на скачивание (php://output)
exit();
Timer::finish();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment