Exemple #1
0
 private static function MakeReport()
 {
     $Importconfig = Importconfig::findOne(1);
     /*   ini_set('max_execution_time', $Importconfig->max_execution_time);  // 1000 seconds
          ini_set('memory_limit', $Importconfig->memory_limit); // 1Gbyte Max Memory */
     /* Загружаем PHPExcel */
     $objPHPExcel = new \PHPExcel();
     /* Границы таблицы */
     $ramka = array('borders' => array('allborders' => array('style' => \PHPExcel_Style_Border::BORDER_THIN)));
     /* Жирный шрифт для шапки таблицы */
     $font = array('font' => array('bold' => true), 'alignment' => array('horizontal' => \PHPExcel_Style_Alignment::HORIZONTAL_CENTER));
     $logreport = Logreport::find()->orderBy('logreport_id desc')->asArray()->one();
     $itog = $objPHPExcel->getActiveSheet();
     $itog->setTitle('Итоги');
     /*    $matsheet = $objPHPExcel->createSheet(1);
           $matsheet->setTitle('Материальные ценности');
           $empsheet = $objPHPExcel->createSheet(2);
           $empsheet->setTitle('Сотрудники');
           $trafsheet = $objPHPExcel->createSheet(3);
           $trafsheet->setTitle('Операции над мат. ценностями'); */
     $itog->setCellValueByColumnAndRow(0, 1, 'Отчет импорта №' . $logreport['logreport_id']);
     $itog->setCellValueByColumnAndRow(0, 2, 'Дата: ' . date('d.m.Y', strtotime($logreport['logreport_date'])));
     $itog->getStyle('A2')->applyFromArray(array('font' => array('italic' => true, 'size' => 12)));
     $LogreportAR = new Logreport();
     $itog->setCellValueByColumnAndRow(0, 4, $LogreportAR->getAttributeLabel('logreport_amount'));
     $itog->setCellValueByColumnAndRow(1, 4, $LogreportAR->getAttributeLabel('logreport_additions'));
     $itog->setCellValueByColumnAndRow(2, 4, $LogreportAR->getAttributeLabel('logreport_updates'));
     $itog->setCellValueByColumnAndRow(3, 4, $LogreportAR->getAttributeLabel('logreport_errors'));
     $itog->setCellValueByColumnAndRow(4, 4, $LogreportAR->getAttributeLabel('logreport_missed'));
     $itog->setCellValueByColumnAndRow(0, 5, $logreport['logreport_amount']);
     $itog->setCellValueByColumnAndRow(1, 5, $logreport['logreport_additions']);
     $itog->setCellValueByColumnAndRow(2, 5, $logreport['logreport_updates']);
     $itog->setCellValueByColumnAndRow(3, 5, $logreport['logreport_errors']);
     $itog->setCellValueByColumnAndRow(4, 5, $logreport['logreport_missed']);
     $itog->getStyle('A4:E5')->applyFromArray($ramka);
     $itog->getStyle('A4:E4')->applyFromArray($font);
     $itog->getStyle('A1')->applyFromArray(array('font' => array('bold' => true, 'size' => 14), 'alignment' => array('horizontal' => \PHPExcel_Style_Alignment::HORIZONTAL_CENTER)));
     $itog->mergeCells('A1:E1');
     $c = count($logreport);
     /* Авторазмер колонок Excel */
     foreach (range(0, $c) as $col) {
         $itog->getColumnDimensionByColumn($col)->setAutoSize(true);
     }
     //      ----------------  Материальные ценности ------------------------------------------
     $rows = Matlog::find()->select(['matlog_filename', 'matlog_filelastdate', 'matlog_rownum', 'matlog_message', 'material_name1c', 'material_1c', 'material_inv', 'material_serial', 'material_release', 'material_number', 'material_price', 'material_tip', 'izmer_name', 'matvid_name', 'schetuchet_kod', 'schetuchet_name'])->where(['id_logreport' => $logreport['logreport_id']])->asArray()->all();
     if (count($rows) > 0) {
         $matsheet = $objPHPExcel->createSheet(1);
         $matsheet->setTitle('Материальные ценности');
         self::ExcelApplyValues($matsheet, $rows, ['date' => ['material_release'], 'datetime' => ['matlog_filelastdate'], 'string' => ['material_1c', 'material_inv', 'material_serial'], 'case' => ['material_tip' => [1 => 'Основное средство', 2 => 'Материал', 3 => 'Групповой учет']]]);
     }
     // ----------------------- Сотрудники -------------------------------
     $rows = Employeelog::find()->select(['employeelog_filename', 'employeelog_filelastdate', 'employeelog_rownum', 'employeelog_message', 'employee_fio', 'dolzh_name', 'podraz_name', 'build_name'])->where(['id_logreport' => $logreport['logreport_id']])->asArray()->all();
     if (count($rows) > 0) {
         $empsheet = $objPHPExcel->createSheet(2);
         $empsheet->setTitle('Сотрудники');
         self::ExcelApplyValues($empsheet, $rows, ['datetime' => ['employeelog_filelastdate']]);
     }
     // ---------------------- Операции над материальными ценностями -------------------------------------------
     $rows = Traflog::find()->select(['traflog_filename', 'traflog_rownum', 'traflog_message', 'mattraffic_number', 'material_name1c', 'material_1c', 'material_inv', 'material_number', 'employee_fio', 'dolzh_name', 'podraz_name', 'build_name'])->joinWith(['idmatlog', 'idemployeelog'])->where(['traflog.id_logreport' => $logreport['logreport_id']])->createCommand()->queryAll();
     if (count($rows) > 0) {
         $trafsheet = $objPHPExcel->createSheet(3);
         $trafsheet->setTitle('Операции над мат. ценностями');
         self::ExcelApplyValues($trafsheet, $rows, ['string' => ['material_1c', 'material_inv']]);
     }
     /* присваиваем имя файла от имени модели */
     $FileName = 'Отчет импорта в систему Фрегат N' . $logreport['logreport_id'];
     // Устанавливаем имя листа
     //  $itog->setTitle($FileName);
     // Выбираем первый лист
     $objPHPExcel->setActiveSheetIndex(0);
     /* Формируем файл Excel */
     $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
     /* Proc::SaveFileIfExists() - Функция выводит подходящее имя файла, которое еще не существует. mb_convert_encoding() - Изменяем кодировку на кодировку Windows */
     $FileName = DIRECTORY_SEPARATOR === '/' ? $FileName : mb_convert_encoding($FileName, 'Windows-1251', 'UTF-8');
     $fileroot = Proc::SaveFileIfExists('importreports/' . $FileName . '.xlsx');
     /* Сохраняем файл в папку "files" */
     $objWriter->save('importreports/' . $fileroot);
     /* Возвращаем имя файла Excel */
     if (DIRECTORY_SEPARATOR === '/') {
         echo '<BR>' . $fileroot . '<BR>';
     } else {
         echo '<BR>' . mb_convert_encoding($fileroot, 'UTF-8', 'Windows-1251') . '<BR>';
     }
 }