УДК 62
Панферова В.С.,
Студент 4 курс РОСБИОТЕХ г. Москва, РФ Бирюков М.А.,
Студент 4 курс РОСБИОТЕХ г. Москва, РФ
Научный руководитель: Мурашев И.Д.,
Профессор РОСБИОТЕХ г. Москва, РФ
ОТОБРАЖЕНИЕ БАЗОВЫХ ВОЗМОЖНОСТЕЙ PHP С EXCEL С ПОМОЩЬЮ СОЗДАНИЯ EXCEL ТАБЛИЦ С ИСПОЛЬЗОВАНИЕМ БИБЛИОТЕКИ PHPSPREADSHEET
Аннотация
В статье отображены минимальные возможности взаимодействия языка программирования PHP с таблицами Excel. С помощью библиотеки PHPSpreadSheet создаётся таблица с базовыми настройками, которые задаются программе, например: выставления шрифта и размера шрифта по умолчанию, наполнение ячеек таблицы, отображение реального времени при создании файла, изменение фрагмента текста и изменение названия листа, на котором отображена таблица.
Ключевые слова
PHP, Excel, PHPSpreadSheet, Composer, библиотека.
Взаимодействие с excel таблицами на любом языке программирования является полезным навыком, поскольку использование excel таблиц для формирования и обработки большого количества данных достаточно удобно [1]. Но при взаимодействия с программным кодом, данные действия оптимизируются и это сокращает большое количество времени для записи и обработки информации. На языке программирования PHP наиболее популярной библиотекой для взаимодействия с excel таблицами является PHPSpreadSheet [2].
Для использования библиотеки PHPSpreadSheet необходимо предварительно выполнить установку Composer [3]. Composer представляет собой программное обеспечение для упрощения установки и обновления библиотек на php [4]. Composer установлен с официального сайта путём скачивания установщика. Само программное обеспечение устанавливается в php.exe. Далее для установки библиотеки PHPSpreadSheet необходимо в командной строке (в операционной системе Windows 11) перейти в папку с проектом путём ввода команды cd «путь к папке» [5]. Далее ввести в командную строку «composer require phpoffice/phpspreadsheet». Могут возникнуть ошибки при установке из-за отсутствия расширений. Для устранения ошибок при установке в файле php.ini достаточно раскомментировать расширения, из-за которых возникают ошибки при установке.
Существует похожая библиотека PHPExcel [6]. Данная библиотека выпущена от того же разработчика, что и библиотека PHPSpreadSheet, только PHPSpreadSheet является более поздней и продвинутой версией прошлой. Также для PHPExcel больше не проводится поддержка, поэтому при её использовании на более поздних версиях php могут возникнуть ошибки (в основном ошибка происходит
исходя из синтаксиса написания программы).
После установки был создан файл type.php. Далее был написан код для отображения базовых возможностей работы библиотеки на примере создания файла с расширением xls.
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\I0Factory;
use PhpOffice\PhpSpreadsheet\Shared\Date;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
use PhpOffice\PhpSpreadsheet\RichText\RichText;
8 use PhpOffice\PhpSpreadsheet\Style\Color;
17 //автоматическое расширение столбца по содержимому
13 ->setCellValue('CI',"This is Phpspreadsheet");
Рисунок 1 - Часть 1 программного кода в файле type.php
На рисунке 1 отображено часть кода в файле type.php. С помощью метода getDefaultStyle() были выставлены шрифт и размер шрифта во всей таблице по умолчанию. В качестве шрифта по умолчанию был выбран шрифт Arial и размер шрифта 10. Далее с помощью метода setAutoSize (true) было произведено автоматическое расширения выбранного столбца по содержимому. С помощью метода getColumnDimension ('название столбца') был выбран столбец для автоматического расширения по содержимому. Заполнение определённой ячейки производится с помощью метода setCellValue(), где первым параметром указывается ячейка, а вторым параметром указывается содержимое ячейки в форме строки. Для примера на листинге 1 отображено, что помимо латиницы, вторым параметром метод может принимать строки с кириллицей и числами.
type.php X
30 $dateTimeNow=time()j
31 //дата
$spreadsheet->getActiveSheet()
33 ->setCellValue('A2'/'Date/Time")
34 ->setCellValue(,B2,J"Date")
35 ->setCellValue(' C2',Date::PHPToExcel($dateTimeNow));
37 $spreadsheet->getActiveSheet()
38 ->getStyle('C2')
39 ->getNumberFormat()
->setFormatCode(NumberFormat::F0RMAT_DATE_YYYYMMDD2)
41 //дата и время
42 $spreadsheet->getActiveSheet()
43 ->setCellValue('A3',"Date/Time")
44 ->setCellValue(1B3',"Date Time")
ДЗ ->setCellValue('C3',Date::PHPToExcel($dateTimeNow))j
$spreadsheet->getActiveSheet()
48 ->getStyle('C31)
49 ->getNumberFormat()
50 ->setFormatCode(NumberFormat:s FORMAT_DATE_DATETIME);
51 //время
52 $spreadsheet->getActiveSheet()
53 ->setCellValue('A4',"Date/Time")
54 ->setCellValue(1B4'j"Only Time")
55 ->setCellValue(' C4", Date::PHPToExcel(JdateTimeNow));
$spreadsheet->getActiveSheet() 58 ->getStyle('C4') 53 ->getNumberFormat()
->setFormatCode(NumberFormat:!F0RMAT_DATE_TIME4);
Рисунок 2 - Часть 2 программного кода в файле type.php
На рисунке 2 отображено продолжение кода в файле type.php. В переменную $dateTimeNow было передано количество секунд, прошедших с 1970 года 0 часов 0 минут 0 секунд [7]. Далее были заполнены ячейки. В ячейку С2 передаётся текущее время (время, в которое выполнился скрипт) и был выставлен формат ячейки «Дата», далее был выставлен формат даты (форматов существует множество, которое можно посмотреть в документации к данной библиотеке) в качестве YYYYMMDD2 [8]. Затем были произведены аналогичные действия, только с изменением формата под дату и время DATETIME и отображение только времени Т1МЕ4.
type.php X
//особый текст
{spreadsheet->getActiveSheet() ->setCellValue(' А5 ',"Особый текст"); {richText = new RichTextQ;
{richText->createText(1 Здесь какой то текст '); {payable={richText->createTextRun('здесь продолжение текста'); $рауable->getFont()->setBold(true); $payable->getFont()->setItalic(true);
{payable->getFont()->setСolor(new Color( Color:¡COLOR_DARKGREEN));
{redText={richText->createTextRun(' красный текст '); {redText->getFont()->setColor(new Color( Color::C0L0R_RED));
74 $richText->createText('j ещё продолжение текста');
75 {spreadsheet->getActiveSheet()->getCell('C5')->setValue({richText);
77 //ссылка в интернет
78 $spreadsheet->getActiveSheet()
79 ->setCellValue('A6"Ссылка в интернет")
80 ->setCellValue('В6',"Ссылка")
->setCellValue('С6"Документация к PhpSpreadsheet");
81 {spreadsheet->getActiveSheet()
84 ->getCell('C6')
85 ->getHyperlink()
86 ->setUrl('https://phpspreadsheet.readthedocs.io/еп/latest/') ->setTooltip('Документация на PHPSpreadSheet');
88
89 //сменить название листа excel
90 $spreadsheet->getActiveSheet()
91 ->setTitle('PHPSpreadSheet');
92
93 header('Content-Type : application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
94 header('Content-Disposition : attachment;filename="result.xlsx"');
{writer =I0Factory: :createWriter($spreadsheet, 'Xlsx'); 97 {writer->save('php://output');
Рисунок 3 - Часть 3 программного кода в файле type.php
С помощью библиотеки разработчик может создать особый стиль тексту. Код отображён на рисунке 3. С помощью метода createTextRun() возможно придать особый стиль фрагменту строки. С помощью методов setBold(true), setltalic(true) и setColor() были приданы фрагменту текста такие стили, как жирность, курсив и цвет текста (в данном случае тёмно-зелёный).
Также есть возможность создавать в ячейке ссылку на любой ресурс в интернете. С помощью метода setUrl() задаём ссылку на ресурс, а метод setTooltip() задаёт текст ссылки в ячейке. При нажатии на ячейку у пользователя открывается страница с интернет - ресурсом в браузере установленным по умолчанию.
Разработчик может задать название листа. С помощью метода setTitle('название листа') можно задать любое название листа в Excel.
На рисунке 4 изображён результат выполнения файла type.php.
61 62
65
66
68
69
70
1, А В
-556,74 Простой текст ТЫБ РИрэргеас^ее!
2 Date/Time Date 2023-06-26
3 Date/Time Date Time 26/6/23 19:41
4 Date/Time Only Time 19:41:14
5 Особый текст Здесь какой то текст здесь продолжение текста красный текст, ещё продолжение текста
6 Ссылка в Ссылка Документация к РЬрЭргеайэЬее!
Рисунок 4 - Изображение результата таблицы excel после выполнения кода файла type.php
С помощью библиотеки PHPSpreadSheet можно создавать таблицы в excel, задавать различные характеристики как отдельным ячейкам и столбцам, так и таблице в общем. Данную библиотеку можно использовать параллельно с парсингом сайтов для сбора и фильтрации различной информации. В данной статье были отображены минимальные возможности взаимодействия с библиотекой при создании excel файла. Список использованной литературы:
1. Microsoft Excel // Microsoft URL: https://www.microsoft.com/ru-ru/microsoft-365/excel (дата обращения: 25.06.2023).
2. PHPSpreadSheet Documentation // PHPSpreadSheet URL: https://phpspreadsheet.readthedocs.io/en/latest/ (дата обращения: 25.06.2023).
3. Composer // Composer Docs URL: https://getcomposer.org/doc/ (дата обращения: 25.06.2023).
4. Composer — менеджер зависимостей для PHP // Хабр URL: https://habr.com/ru/articles/145946/ (дата обращения: 26.06.2023).
5. cd // Microsoft URL: https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cd (дата обращения: 26.06.2023).
6. PHPExcel // GitHub URL: https://github.com/PHPOffice/PHPExcel (дата обращения: 26.06.2023).
7. time // php URL: https://www.php.net/manual/ru/function.time.php (дата обращения: 26.06.2023).
8. NumberFormat // Documentation URL: https://phpoffice.github.io/PhpSpreadsheet/classes/PhpOffice-PhpSpreadsheet-Style-NumberFormat.html (дата обращения: 27.06.2023).
© Панферова В.С., Бирюков М.А., 2023
УДК 62
Сапарова Т.,
Старший преподаватель, Туркменский государственный архитектурно-строительный институт,
Ашхабад, Туркменистан Сапаров Г., Преподаватель,
Туркменский государственный архитектурно-строительный институт,
Ашхабад, Туркменистан Байраммурадов А., Преподаватель,
Туркменский государственный архитектурно-строительный институт,
Ашхабад, Туркменистан
ФИЗИЧЕСКИЕ МЕТОДЫ ГЕОФИЗИЧЕСКИХ ИССЛЕДОВАНИЙ. ЯДЕРНАЯ ГЕОФИЗИКА.
Аннотация
Ядерная методика и техника наблюдений относится к геофизическим методам и решает некоторые геохимические задачи.