phpspreadsheet автовысота строки
Задача: для некоторых строк выставить автоматическую высоту
Решение:
| 1 |     $wSheet->getRowDimension($totalrow)->setRowHeight(-1);   | 
Жизнь замечательных грибов
Здесь собраны статьи, наработки, исправление ошибок и решение проблем связанных с разработкой на языке PHP
Задача: для некоторых строк выставить автоматическую высоту
Решение:
| 1 |     $wSheet->getRowDimension($totalrow)->setRowHeight(-1);   | 
Задача: добавить произвольный заголовок клиенту при рукопожатии с сервером. Например Sec-WebSocket-Protocol
Решение:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | use Amp\Delayed; use Amp\Websocket\Client\Connection; use Amp\Websocket\Client\Handshake; use Amp\Websocket\Message; use function Amp\Websocket\Client\connect; use Amp\Socket\ClientTlsContext; use Amp\Socket\ConnectContext;             Amp\Loop::run(function () use ($wss_url,$ip,$port,$pascket,&$answer,$wait_reseive) {                                             $tlsc=new ClientTlsContext("");                 $tlw=$tlsc->withoutPeerVerification();                 $connectContext = (new ConnectContext)->withTlsContext($tlw);                 $handshake = (new Handshake("ws://1.18.24.70:$port/virtual_api_1c"))->withHeader('Sec-WebSocket-Protocol', 'virtual');                   $connection = yield connect($handshake,$connectContext);                    yield $connection->send($pascket);                 yield $connection->close();             });   | 
В одной из задач возникла проблема: скрипт javascript «крутящийся» на localhost должен утянуть файл json с удаленного ресурса https. Вот тут и возникает ошибка:
| 1 | Error: XMLHttpRequest error. As been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource | 
Возникает она из-за политик CORS удаленного сайта.
Решение: добавить в скрипт который «выдает» данные, заголовок, что конкретно эти данные можно отдавать ну например ..всем.
| 1 2 3 4 | <?php header('Access-Control-Allow-Origin: *'); echo '{"UserId":"10","UserName":"Vasya Pukin 1"}'; ?> | 
Одним из вариантов работы с файлами Эксель является библиотека PhpSpreadsheet.
Установка:
| 1 2 3 4 5 6 | composer require phpoffice/phpspreadsheet Пример использования: | 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | /require_once('vendor/autoload.php'); use PhpOffice\PhpSpreadsheet\IOFactory; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Style\{Font, Border, Alignment}; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; $oSpreadsheet = IOFactory::load("akt.xlsx"); // шаблон с шапкой $oSpreadsheet->getProperties()    ->setCreator('SSK, OOO')    ->setLastModifiedBy('SSK, OOO')    ->setTitle('Акт сверки с клиентом')     ->setSubject('Акт сверки с клиентом')    ->setKeywords('кцмукмц ')    ->setCategory('узщшамыуозк ') ; $oSpreadsheet->setActiveSheetIndex(0); $wSheet = $oSpreadsheet->getActiveSheet(); $wSheet->setCellValueByColumnAndRow(1, 3, "Клиент: " . $res->result->user); $wSheet->setCellValueByColumnAndRow(1, 4, "Дата с: " . $res->result->from); $wSheet->setCellValueByColumnAndRow(1, 5, "Дата по: " . $res->result->from); $totalrow=8; $balance=0; foreach($res->result->table as $row) {     $source="";     if ($row->doc_reservation>0){$source="уцкацук м №".$row->doc_reservation;};     if ($row->doc_charge>0){$source="ы укмыу №".$row->doc_charge;};     if ($row->doc_payment>0){         $source="уфыкмыукм №".$row->doc_payment;         if ($row->connector>0){$source=$source.",фыумукау №".$row->connector;};             };      $wSheet->setCellValueByColumnAndRow(1, $totalrow, $row->date);    //дата     $wSheet->setCellValueByColumnAndRow(2, $totalrow, $source);    // источник          $wSheet->setCellValueByColumnAndRow(3, $totalrow, $row->debit);    // дебет     $wSheet->setCellValueByColumnAndRow(4, $totalrow, $row->credit);    // кредит     $wSheet->setCellValueByColumnAndRow(5, $totalrow, $row->balance);    // баланс     $wSheet->setCellValueByColumnAndRow(6, $totalrow, $row->ezs);    // ЭЗС     $balance=$row->balance;     $totalrow++; } $wSheet->setCellValueByColumnAndRow(1, $totalrow, "Текущий баланс: " . $balance); $wSheet->getStyle('A'.$totalrow)->applyFromArray([     'font' => [       'name' => 'Arial',       'bold' => true,       'italic' => false,       'underline' => Font::UNDERLINE_DOUBLE,       'strikethrough' => false,       'color' => [           'rgb' => '808080'          ]     ],     'borders' => [         'allBorders' => [             'borderStyle' => Border::BORDER_THIN,             'color' => [                 'rgb' => '808080'             ]         ],     ],     'alignment' => [         'horizontal' => Alignment::HORIZONTAL_CENTER,         'vertical' => Alignment::VERTICAL_CENTER,         'wrapText' => true,     ] ]); // установить цвет фона ячейки $wSheet->getStyle('A'.$totalrow)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB('00FF7F'); $oWriter = IOFactory::createWriter($oSpreadsheet, 'Xlsx'); $oWriter->save('php://output'); |