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'); |