Your IP : 216.73.216.170
<?
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();