В цьому уроці ми навчимося взаємодіяти з таблицями Excel. А саме ми навчимося отримувати дані з комірок таблиці, навчимося обробляти ці дані, і розглянемо приклад, як можна виводити вже оброблену інформацію в браузері.
Невелика передмова та пояснення до уроку.
З настанням холодів у 2022 році російська федерація почала обстрілювати об'єкти критичної інфраструктури України. Внаслідок цього електростанції змушені були ввести графік погодинного відключення електроенергії.
Вулиці були поділені на 3 черги. За невисокого навантаження на електростанції, електрика подавалася за наступним принципом: одна черга, без електрики, дві – з електрикою. Тобто якщо, наприклад, на вулицях, які входять в першу чергу світла немає, то вулиці другої та третьої черги зі світлом. Потім вулиці першої та третьої черги зі світлом, а друга черга без світла. Потім третя черга без світла, а перша та друга зі світлом.
За більш-менш меншої інтенсивності обстрілів графік був наступним: 4 години електрика подається, а 2 дві години – ні.
При інтенсивних обстрілах та потрапляннях в електростанції світло відключали за наступною схемою: 2 години електрика подається, 4 години – ні. Тобто доводилося вимикати дві черги одночасно. І тоді принцип був такий, якщо перша черга має світло, то друга і третя – без світла. Якщо у другої черги світло є, то перша і третя без світла. Якщо у третьої є світло, то перша і друга без світла.
Для зручності був складений графік на весь місяць і можна було легко подивитися, коли і в кого не буде подачі електроенергії.
Але, для більшої зручності, я вирішив написати ще й невелику програму на PHP, за допомогою якої людина могла б вибрати дату, яка її цікавить, і подивитися який графік відключення буде саме в цей день.
З цього задуму і вийшов гарний матеріал для уроку роботи з таблицями Excel.
Бібліотека PhpSpreadsheet
Для створення програми, мені знадобилася бібліотека PhpSpreadsheet:
- Завантажити PhpSpreadsheet можна тут https://github.com/PHPOffice/PhpSpreadsheet
- Офіційний сайт та документація тут https://phpspreadsheet.readthedocs.io/en/latest/
PhpSpreadsheet – це бібліотека, написана на чистому PHP, яка пропонує набір класів, що дозволяють читати та записувати різні формати файлів електронних таблиць, наприклад Excel та LibreOffice Calc.
Отримання даних з Excel
<form method="POST">
<select name="user_date" required="required">
<option value="">Оберіть дату</option>
<option value="1">01</option>
<option value="2">02</option>
<option value="3">03</option>
<option value="4">04</option>
<option value="5">05</option>
<option value="6">06</option>
<option value="7">07</option>
<option value="8">08</option>
<option value="9">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
</select>
<hr>
<input type="submit" name="grafik1" value="Графік -4+2 (таблиця)" />
<input type="submit" name="grafik2" value="Графік -2+4 (таблиця)" />
<input type="submit" name="grafik3" value="Графік -4+2 (список)" />
<input type="submit" name="grafik4" value="Графік -2+4 (список)" />
<input type="submit" name="allList" value="Обидва варіанти" />
</form>
<hr>
<form method="POST">
<input type="submit" name="grafikToday" value="Графік на сьогодні (список)" />
<input type="submit" name="grafikTomorrow" value="Графік на завтра (список)" />
</form>
<hr>
<?php
//підключаємо бібліотеку Spreadsheet
require_once 'PhpSpreadsheet-master/src/PhpSpreadsheet/Spreadsheet.php';
require 'PhpSpreadsheet-master/vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\IOFactory;
$excel = \PhpOffice\PhpSpreadsheet\IOFactory::load('grafik.xls');
//Виводимо графік 4 години немає світла, 2 години – є
if(isset($_POST['grafik1'])) {
tableFourTwo();
}
//Виводимо графік 2 години немає світла, 4 години – є
if(isset($_POST['grafik2'])) {
tableTwoFour();
}
//Виводимо графік 4 години немає світла, 2 години – є (списком)
if(isset($_POST['grafik3'])) {
listFourTwo();
}
//Виводимо графік 2 години немає світла, 4 години – є (списком)
if(isset($_POST['grafik4'])) {
listTwoFour();
}
//Виводимо обидва графіки списком
if(isset($_POST['allList'])) {
listFourTwo();
listTwoFour();
}
//Виводимо графік на сьогодні
if(isset($_POST['grafikToday'])) {
listToday();
}
//Виводимо графік на завтра
if(isset($_POST['grafikTomorrow'])) {
listTomorrow();
}
// Функція виводу графіка за схемою 4 години немає світла, 2 години – є (у вигляді таблиці)
function tableFourTwo() {
$excel = \PhpOffice\PhpSpreadsheet\IOFactory::load('grafik.xls');
$userDate = $_POST['user_date']; // отримуємо дату що обрав користувач в випадаючому списку
// цикл for (присвоюємо змінній DateTurtOf значення 3 бо колонки з годинами починаються з 3-ї
// потім проходимо по колонках і вибираємо час відключення та для якої черги цей час діє
// результат виводимо на екран
echo '<h2>⚡Графік ВІДКЛЮЧЕННЯ електроенергії<br>на ' . $userDate . ' грудня⚡</h2>❗Увага❗<br>⚠️Графік ОРІЄНТОВНИЙ. Це означає, що він може НЕ діяти (і скоріш за все НЕ ДІЯТИМЕ) при застосуванні аварійних відключень, або у разі якщо НЕК Укренерго зменшить ліміт потужності в області.<br><br><table width="600" border="1"><tr><td>Перша черга</td><td>Друга черга</td><td>Третя черга</td></tr>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
// перевірка і розподіл по чергам
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($userDate+2, $DateTurtOf)->getValue();
if ($cherga == '1 (та 3) черга') {
echo '<tr><td>' . $timeOf . '</td><td>' . '-----' . '</td><td>' . $timeOf;
} else if ($cherga == '2 (та 1) черга') {
echo '<tr><td>' . $timeOf . '</td><td>' . $timeOf . '</td><td>' . '-----';
} else if ($cherga == '3 (та2) черга') {
echo '<tr><td>' . '-----' . '</td><td>' . $timeOf . '</td><td>' . $timeOf;
}
$DateTurtOf = $DateTurtOf++;
}
echo '</td></tr></table>'; // закінчуємо таблицю з відключенням
echo '<h2>⚡Графік ВКЛЮЧЕННЯ електроенергії<br>на ' . $userDate . ' грудня⚡</h2>❗Увага❗<br>⚠️Графік ОРІЄНТОВНИЙ. Це означає, що він може НЕ діяти (і скоріш за все НЕ ДІЯТИМЕ) при застосуванні аварійних відключень, або у разі якщо НЕК Укренерго зменшить ліміт потужності в області.<br><br><table width="600" border="1"><tr><td>Перша черга</td><td>Друга черга</td><td>Третя черга</td></tr>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($userDate+2, $DateTurtOf)->getValue();
if ($cherga == '1 (та 3) черга') {
echo '<tr><td>' . '-----' . '</td><td>' . $timeOf . '</td><td>' . '-----';
} else if ($cherga == '2 (та 1) черга') {
echo '<tr><td>' . '-----' . '</td><td>' . '-----' . '</td><td>' . $timeOf;
} else if ($cherga == '3 (та2) черга') {
echo '<tr><td>' . $timeOf . '</td><td>' . '-----' . '</td><td>' . '-----';
}
$DateTurtOf = $DateTurtOf++;
}
echo '</td></tr></table>';
}
// Функція виводу графіка за схемою 2 години немає світла, 4 години – є (у вигляді таблиці)
function tableTwoFour() {
$excel = \PhpOffice\PhpSpreadsheet\IOFactory::load('grafik.xls');
$userDate = $_POST['user_date'];
echo '<h2>⚡Графік ВІДКЛЮЧЕННЯ електроенергії<br>на ' . $userDate . ' грудня⚡</h2>❗Увага❗<br>⚠️Графік ОРІЄНТОВНИЙ. Це означає, що він може НЕ діяти (і скоріш за все НЕ ДІЯТИМЕ) при застосуванні аварійних відключень, або у разі якщо НЕК Укренерго зменшить ліміт потужності в області.<br><br><table width="600" border="1"><tr><td>Перша черга</td><td>Друга черга</td><td>Третя черга</td></tr>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($userDate+2, $DateTurtOf)->getValue();
if ($cherga == '1 (та 3) черга') {
echo '<tr><td>' . $timeOf . '</td><td>' . '-----' . '</td><td>' . '-----';
} else if ($cherga == '2 (та 1) черга') {
echo '<tr><td>' . '-----' . '</td><td>' . $timeOf . '</td><td>' . '-----';
} else if ($cherga == '3 (та2) черга') {
echo '<tr><td>' . '-----' . '</td><td>' . '-----' . '</td><td>' . $timeOf;
}
$DateTurtOf = $DateTurtOf++;
}
echo '</td></tr></table>';
echo '<h2>⚡Графік ВКЛЮЧЕННЯ електроенергії<br>на ' . $userDate . ' грудня⚡</h2>❗Увага❗<br>⚠️Графік ОРІЄНТОВНИЙ. Це означає, що він може НЕ діяти (і скоріш за все НЕ ДІЯТИМЕ) при застосуванні аварійних відключень, або у разі якщо НЕК Укренерго зменшить ліміт потужності в області.<br><br><table width="600" border="1"><tr><td>Перша черга</td><td>Друга черга</td><td>Третя черга</td></tr>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($userDate+2, $DateTurtOf)->getValue();
if ($cherga == '1 (та 3) черга') {
echo '<tr><td>' . '-----' . '</td><td>' . $timeOf . '</td><td>' . $timeOf;
} else if ($cherga == '2 (та 1) черга') {
echo '<tr><td>' . $timeOf . '</td><td>' . '-----' . '</td><td>' . $timeOf;
} else if ($cherga == '3 (та2) черга') {
echo '<tr><td>' . $timeOf . '</td><td>' . $timeOf . '</td><td>' . '-----';
}
$DateTurtOf = $DateTurtOf++;
}
echo '</td></tr></table>';
}
// Функція виводу графіка за схемою 4 години немає світла, 2 години – є (у вигляді списка)
function listFourTwo() {
$excel = \PhpOffice\PhpSpreadsheet\IOFactory::load('grafik.xls');
$userDate = $_POST['user_date'];
echo '<h2>⚡Графік ВІДКЛЮЧЕННЯ електроенергії<br>на ' . $userDate . ' грудня⚡</h2>❗Увага❗<br>⚠️Графік ОРІЄНТОВНИЙ. Це означає, що він може НЕ діяти (і скоріш за все НЕ ДІЯТИМЕ) при застосуванні аварійних відключень, або у разі якщо НЕК Укренерго зменшить ліміт потужності в області.<br><br>📌ЯКЩО БУДЕ ДІЯТИ ГРАФІК 4 ГОДИНИ НЕМАЄ ЕЛЕКТРОЕНЕРГІЇ, 2 ГОДИНИ – Є, ТО СВІТЛА НЕ БУДЕ В ТАКІ ГОДИНИ:<br>1️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($userDate+2, $DateTurtOf)->getValue();
if ($cherga == '1 (та 3) черга' or $cherga == '2 (та 1) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
echo '<br>2️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($userDate+2, $DateTurtOf)->getValue();
if ($cherga == '2 (та 1) черга' or $cherga == '3 (та2) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
echo '<br>3️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($userDate+2, $DateTurtOf)->getValue();
if ($cherga == '3 (та2) черга' or $cherga == '2 (та 1) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
echo '<h2>⚡Графік ВКЛЮЧЕННЯ електроенергії<br>на ' . $userDate . ' грудня⚡</h2>❗Увага❗<br>⚠️Графік ОРІЄНТОВНИЙ. Це означає, що він може НЕ діяти (і скоріш за все НЕ ДІЯТИМЕ) при застосуванні аварійних відключень, або у разі якщо НЕК Укренерго зменшить ліміт потужності в області.<br><br>📌ЯКЩО БУДЕ ДІЯТИ ГРАФІК 4 ГОДИНИ НЕМАЄ ЕЛЕКТРОЕНЕРГІЇ, 2 ГОДИНИ – Є, ТО СВІТЛО БУДЕ В ТАКІ ГОДИНИ:<br>1️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($userDate+2, $DateTurtOf)->getValue();
if ($cherga == '3 (та2) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
echo '<br>2️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($userDate+2, $DateTurtOf)->getValue();
if ($cherga == '1 (та 3) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
echo '<br>3️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($userDate+2, $DateTurtOf)->getValue();
if ($cherga == '2 (та 1) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
}
// Функція виводу графіка за схемою 2 години немає світла, 4 години – є (у вигляді списка)
function listTwoFour() {
$excel = \PhpOffice\PhpSpreadsheet\IOFactory::load('grafik.xls');
$userDate = $_POST['user_date'];
echo '<h2>⚡Графік ВІДКЛЮЧЕННЯ електроенергії<br>на ' . $userDate . ' грудня⚡</h2>❗Увага❗<br>⚠️Графік ОРІЄНТОВНИЙ. Це означає, що він може НЕ діяти (і скоріш за все НЕ ДІЯТИМЕ) при застосуванні аварійних відключень, або у разі якщо НЕК Укренерго зменшить ліміт потужності в області.<br><br>📌ЯКЩО БУДЕ ДІЯТИ ГРАФІК 2 ГОДИНИ НЕМАЄ ЕЛЕКТРОЕНЕРГІЇ, 4 ГОДИНИ – Є, ТО СВІТЛА НЕ БУДЕ В ТАКІ ГОДИНИ:<br>1️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($userDate+2, $DateTurtOf)->getValue();
if ($cherga == '1 (та 3) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
echo '<br>2️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($userDate+2, $DateTurtOf)->getValue();
if ($cherga == '2 (та 1) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
echo '<br>3️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($userDate+2, $DateTurtOf)->getValue();
if ($cherga == '3 (та2) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
echo '<h2>⚡Графік ВКЛЮЧЕННЯ електроенергії<br>на ' . $userDate . ' грудня⚡</h2>❗Увага❗<br>⚠️Графік ОРІЄНТОВНИЙ. Це означає, що він може НЕ діяти (і скоріш за все НЕ ДІЯТИМЕ) при застосуванні аварійних відключень, або у разі якщо НЕК Укренерго зменшить ліміт потужності в області.<br><br>📌ЯКЩО БУДЕ ДІЯТИ ГРАФІК 2 ГОДИНИ НЕМАЄ ЕЛЕКТРОЕНЕРГІЇ, 4 ГОДИНИ – Є, ТО СВІТЛО БУДЕ В ТАКІ ГОДИНИ:<br>1️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($userDate+2, $DateTurtOf)->getValue();
if ($cherga == '3 (та2) черга' or $cherga == '2 (та 1) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
echo '<br>2️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($userDate+2, $DateTurtOf)->getValue();
if ($cherga == '3 (та2) черга' or $cherga == '1 (та 3) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
echo '<br>3️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($userDate+2, $DateTurtOf)->getValue();
if ($cherga == '1 (та 3) черга' or $cherga == '2 (та 1) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
}
// Вивід графіка на сьогодні
function listToday() {
$curDate = date('j'); // поточна дата (тільки число, без нуля на початку)
$excel = \PhpOffice\PhpSpreadsheet\IOFactory::load('grafik.xls');
echo '<h2>⚡Графік ВІДКЛЮЧЕННЯ електроенергії<br>на ' . $curDate . ' грудня⚡</h2>❗Увага❗<br>⚠️Графік ОРІЄНТОВНИЙ. Це означає, що він може НЕ діяти (і скоріш за все НЕ ДІЯТИМЕ) при застосуванні аварійних відключень, або у разі якщо НЕК Укренерго зменшить ліміт потужності в області.<br><br>📌ЯКЩО БУДЕ ДІЯТИ ГРАФІК 4 ГОДИНИ НЕМАЄ ЕЛЕКТРОЕНЕРГІЇ, 2 ГОДИНИ – Є, ТО СВІТЛА НЕ БУДЕ В ТАКІ ГОДИНИ:<br>1️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($curDate+2, $DateTurtOf)->getValue();
if ($cherga == '1 (та 3) черга' or $cherga == '2 (та 1) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
echo '<br>2️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($curDate+2, $DateTurtOf)->getValue();
if ($cherga == '2 (та 1) черга' or $cherga == '3 (та2) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
echo '<br>3️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($curDate+2, $DateTurtOf)->getValue();
if ($cherga == '3 (та2) черга' or $cherga == '2 (та 1) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
echo '<hr><h2>⚡Графік ВКЛЮЧЕННЯ електроенергії<br>на ' . $curDate . ' грудня⚡</h2>❗Увага❗<br>⚠️Графік ОРІЄНТОВНИЙ. Це означає, що він може НЕ діяти (і скоріш за все НЕ ДІЯТИМЕ) при застосуванні аварійних відключень, або у разі якщо НЕК Укренерго зменшить ліміт потужності в області.<br><br>📌ЯКЩО БУДЕ ДІЯТИ ГРАФІК 4 ГОДИНИ НЕМАЄ ЕЛЕКТРОЕНЕРГІЇ, 2 ГОДИНИ – Є, ТО СВІТЛО БУДЕ В ТАКІ ГОДИНИ:<br>1️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($curDate+2, $DateTurtOf)->getValue();
if ($cherga == '3 (та2) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
echo '<br>2️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($curDate+2, $DateTurtOf)->getValue();
if ($cherga == '1 (та 3) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
echo '<br>3️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($curDate+2, $DateTurtOf)->getValue();
if ($cherga == '2 (та 1) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
echo '<hr><h2>⚡Графік ВІДКЛЮЧЕННЯ електроенергії<br>на ' . $curDate . ' грудня⚡</h2>❗Увага❗<br>⚠️Графік ОРІЄНТОВНИЙ. Це означає, що він може НЕ діяти (і скоріш за все НЕ ДІЯТИМЕ) при застосуванні аварійних відключень, або у разі якщо НЕК Укренерго зменшить ліміт потужності в області.<br><br>📌ЯКЩО БУДЕ ДІЯТИ ГРАФІК 2 ГОДИНИ НЕМАЄ ЕЛЕКТРОЕНЕРГІЇ, 4 ГОДИНИ – Є, ТО СВІТЛА НЕ БУДЕ В ТАКІ ГОДИНИ:<br>1️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($curDate+2, $DateTurtOf)->getValue();
if ($cherga == '1 (та 3) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
echo '<br>2️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($curDate+2, $DateTurtOf)->getValue();
if ($cherga == '2 (та 1) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
echo '<br>3️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($curDate+2, $DateTurtOf)->getValue();
if ($cherga == '3 (та2) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
echo '<hr><h2>⚡Графік ВКЛЮЧЕННЯ електроенергії<br>на ' . $curDate . ' грудня⚡</h2>❗Увага❗<br>⚠️Графік ОРІЄНТОВНИЙ. Це означає, що він може НЕ діяти (і скоріш за все НЕ ДІЯТИМЕ) при застосуванні аварійних відключень, або у разі якщо НЕК Укренерго зменшить ліміт потужності в області.<br><br>📌ЯКЩО БУДЕ ДІЯТИ ГРАФІК 2 ГОДИНИ НЕМАЄ ЕЛЕКТРОЕНЕРГІЇ, 4 ГОДИНИ – Є, ТО СВІТЛО БУДЕ В ТАКІ ГОДИНИ:<br>1️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($curDate+2, $DateTurtOf)->getValue();
if ($cherga == '3 (та2) черга' or $cherga == '2 (та 1) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
echo '<br>2️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($curDate+2, $DateTurtOf)->getValue();
if ($cherga == '3 (та2) черга' or $cherga == '1 (та 3) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
echo '<br>3️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($curDate+2, $DateTurtOf)->getValue();
if ($cherga == '1 (та 3) черга' or $cherga == '2 (та 1) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
}
// Вивід графіка на завтра
function listTomorrow() {
$tomDate = date('j')+1; // поточна дата плюс 1 щоб отримати завтрішню дату
$excel = \PhpOffice\PhpSpreadsheet\IOFactory::load('grafik.xls');
echo '<h2>⚡Графік ВІДКЛЮЧЕННЯ електроенергії<br>на ' . $tomDate . ' грудня⚡</h2>❗Увага❗<br>⚠️Графік ОРІЄНТОВНИЙ. Це означає, що він може НЕ діяти (і скоріш за все НЕ ДІЯТИМЕ) при застосуванні аварійних відключень, або у разі якщо НЕК Укренерго зменшить ліміт потужності в області.<br><br>📌ЯКЩО БУДЕ ДІЯТИ ГРАФІК 4 ГОДИНИ НЕМАЄ ЕЛЕКТРОЕНЕРГІЇ, 2 ГОДИНИ – Є, ТО СВІТЛА НЕ БУДЕ В ТАКІ ГОДИНИ:<br>1️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($tomDate+2, $DateTurtOf)->getValue();
if ($cherga == '1 (та 3) черга' or $cherga == '2 (та 1) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
echo '<br>2️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($tomDate+2, $DateTurtOf)->getValue();
if ($cherga == '2 (та 1) черга' or $cherga == '3 (та2) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
echo '<br>3️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($tomDate+2, $DateTurtOf)->getValue();
if ($cherga == '3 (та2) черга' or $cherga == '2 (та 1) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
echo '<hr><h2>⚡Графік ВКЛЮЧЕННЯ електроенергії<br>на ' . $tomDate . ' грудня⚡</h2>❗Увага❗<br>⚠️Графік ОРІЄНТОВНИЙ. Це означає, що він може НЕ діяти (і скоріш за все НЕ ДІЯТИМЕ) при застосуванні аварійних відключень, або у разі якщо НЕК Укренерго зменшить ліміт потужності в області.<br><br>📌ЯКЩО БУДЕ ДІЯТИ ГРАФІК 4 ГОДИНИ НЕМАЄ ЕЛЕКТРОЕНЕРГІЇ, 2 ГОДИНИ – Є, ТО СВІТЛО БУДЕ В ТАКІ ГОДИНИ:<br>1️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($tomDate+2, $DateTurtOf)->getValue();
if ($cherga == '3 (та2) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
echo '<br>2️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($tomDate+2, $DateTurtOf)->getValue();
if ($cherga == '1 (та 3) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
echo '<br>3️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($tomDate+2, $DateTurtOf)->getValue();
if ($cherga == '2 (та 1) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
echo '<hr><h2>⚡Графік ВІДКЛЮЧЕННЯ електроенергії<br>на ' . $tomDate . ' грудня⚡</h2>❗Увага❗<br>⚠️Графік ОРІЄНТОВНИЙ. Це означає, що він може НЕ діяти (і скоріш за все НЕ ДІЯТИМЕ) при застосуванні аварійних відключень, або у разі якщо НЕК Укренерго зменшить ліміт потужності в області.<br><br>📌ЯКЩО БУДЕ ДІЯТИ ГРАФІК 2 ГОДИНИ НЕМАЄ ЕЛЕКТРОЕНЕРГІЇ, 4 ГОДИНИ – Є, ТО СВІТЛА НЕ БУДЕ В ТАКІ ГОДИНИ:<br>1️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($tomDate+2, $DateTurtOf)->getValue();
if ($cherga == '1 (та 3) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
echo '<br>2️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($tomDate+2, $DateTurtOf)->getValue();
if ($cherga == '2 (та 1) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
echo '<br>3️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($tomDate+2, $DateTurtOf)->getValue();
if ($cherga == '3 (та2) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
echo '<hr><h2>⚡Графік ВКЛЮЧЕННЯ електроенергії<br>на ' . $tomDate . ' грудня⚡</h2>❗Увага❗<br>⚠️Графік ОРІЄНТОВНИЙ. Це означає, що він може НЕ діяти (і скоріш за все НЕ ДІЯТИМЕ) при застосуванні аварійних відключень, або у разі якщо НЕК Укренерго зменшить ліміт потужності в області.<br><br>📌ЯКЩО БУДЕ ДІЯТИ ГРАФІК 2 ГОДИНИ НЕМАЄ ЕЛЕКТРОЕНЕРГІЇ, 4 ГОДИНИ – Є, ТО СВІТЛО БУДЕ В ТАКІ ГОДИНИ:<br>1️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($tomDate+2, $DateTurtOf)->getValue();
if ($cherga == '3 (та2) черга' or $cherga == '2 (та 1) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
echo '<br>2️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($tomDate+2, $DateTurtOf)->getValue();
if ($cherga == '3 (та2) черга' or $cherga == '1 (та 3) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
echo '<br>3️⃣ черга:<br>';
for ($DateTurtOf=3; $DateTurtOf<14; $DateTurtOf++) {
$timeOf = $excel->getActiveSheet()->getCellByColumnAndRow(1, $DateTurtOf)->getValue();
$cherga = $excel->getActiveSheet()->getCellByColumnAndRow($tomDate+2, $DateTurtOf)->getValue();
if ($cherga == '1 (та 3) черга' or $cherga == '2 (та 1) черга') {
echo $timeOf . '<br>';
}
$DateTurtOf = $DateTurtOf++;
}
}
?>
Файли, які використовувалися під час створення програми
Графік відключення світла у форматі XLS – Завантажити
Бібліотека PhpSpreadsheet – Завантажити