Current Path : /home/bitrix/ext_www/school1535.yacl.site/ |
Current File : /home/bitrix/ext_www/school1535.yacl.site/oktest.php |
<? define("NOT_CHECK_PERMISSIONS", true); if (!$_SERVER["DOCUMENT_ROOT"]) { $_SERVER["DOCUMENT_ROOT"] = realpath(__DIR__); } else { // die ('Script for console only'); } require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php"); require_once $_SERVER['DOCUMENT_ROOT'] . '/local/composer/vendor/autoload.php'; use Bitrix\Main\Type\DateTime; use Bitrix\Main\Loader; use Bitrix\Highloadblock\HighloadBlockTable as HLBT; use Bitrix\Disk\Security\DiskSecurityContext; use Bitrix\Disk\Security\SecurityContext; use Bitrix\Disk\Storage; use Bitrix\Main\Localization\Loc; Loader::includeModule('tasks'); Loader::includeModule('im'); Loader::includeModule('blog'); $userList = \Bitrix\Main\UserTable::getList([ 'filter' => ['ACTIVE' => 'Y', '!UF_DEPARTMENT' => false], 'select' => ['ID', 'LOGIN', 'EMAIL', 'UF_DEPARTMENT'], 'order' => ['LAST_NAME' => 'ASC', 'NAME' => 'ASC', 'SECOND_NAME' => 'ASC'], ]); $depUsers = []; while($item = $userList->fetch()) { if (is_int($item['UF_DEPARTMENT'])) { $depUsers[$item['UF_DEPARTMENT']][] = $item; } elseif (is_array($item['UF_DEPARTMENT'])) { foreach ($item['UF_DEPARTMENT'] as $dep) { $depUsers[$dep][] = $item; } } } $sectionList = CIBlockSection::GetList(['LEFT_MARGIN' => 'ASC'], ['IBLOCK_ID' => 5]); //okp($depUsers); //okp($all); $spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet(); $spreadsheet->getProperties() ->setCreator('Portal') ->setLastModifiedBy('Portal') ->setTitle('Телефонный справочник ТОФК'); $spreadsheet->setActiveSheetIndex(0); $spreadsheet->getActiveSheet()->setTitle('Телефонный справочник'); $all = []; $row = 0; $userColumns = [ 1 => 'FULL_NAME', 2 => 'WORK_POSITION', 3 => 'PHONE', 4 => 'FAX', 5 => 'MOBILE', 6 => 'BIRTHDATE', 7 => 'EMAIL', ]; while($item = $sectionList->Fetch()) { ++$row; $column = 1; $level = str_repeat('.', $item['DEPTH_LEVEL'] - 1); $spreadsheet->getActiveSheet()->setCellValueByColumnAndRow($column, $row, $level . $item['NAME']); $spreadsheet->getActiveSheet()->getRowDimension($row)->setOutlineLevel($item['DEPTH_LEVEL'])->setVisible(true)->setCollapsed(true); // echo $level . $item['NAME'] . "\n<br>"; foreach ($depUsers[$item['ID']] as $userInfo) { ++$row; foreach ($userColumns as $columnId => $columnCode) { $spreadsheet->getActiveSheet()->setCellValueByColumnAndRow($columnId, $row, $userInfo[$columnCode] ? $userInfo[$columnCode] : $columnCode); $spreadsheet->getActiveSheet()->getRowDimension($row)->setOutlineLevel($item['DEPTH_LEVEL']); } // echo $level . $userInfo['ID'] . ': ' . $userInfo['LOGIN'] . "\n<br>"; } $all[] = $item; } // Redirect output to a client’s web browser (Xlsx) header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename="phone_list.xlsx"'); header('Cache-Control: max-age=0'); // If you're serving to IE 9, then the following may be needed header('Cache-Control: max-age=1'); // If you're serving to IE over SSL, then the following may be needed header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified header('Cache-Control: cache, must-revalidate'); // HTTP/1.1 header('Pragma: public'); // HTTP/1.0 $writer = PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx'); $writer->save('php://output'); die();