Есть excel таблица и некоторая строка, нужно определить поместится ли она в первую ячейку (верхняя желтая) и если нет, то разбить ее по строчкам ниже. Таких строчек и ячеек несколько. Учитывая, что ширина символов разная, вопрос - как это можно реализовать?
Пришлось прибегнуть к костылю, но все же кое-как удалось сделать задуманное. Для определения ширины текста я использовал функцию imagettfbbox со шрифтом и размером ячейки. Для каждой такой ячейки определил в константах ее размер в пикселях (пришлось прогонять рандомный текст, который полностью заполняет ячейку через функцию выше). Далее сравниваю ширину текста с константой и если она больше, то дроблю текст до тех пор, пока ширина не станет меньше. Далее вписываю текст в ячейку и проворачиваю то же самое с оставшимся текстом. Вроде работает.
for ($i = 0; $i <= count($cell); $i++) {
$stringPixelWidth = imagettfbbox(11, 0, $this->getParameter('kernel.project_dir') . self::FONT_FILE, $neededString)[2];
if ($i < count($cell) && $stringPixelWidth > $cell[$i]['width']) {
$words = explode(" ", $neededString);
$lastWords = [];
do {
$lastWord = array_pop($words);
array_unshift($lastWords, $lastWord);
$stringPixelWidth = imagettfbbox(11, 0, $this->getParameter('kernel.project_dir') . self::FONT_FILE, implode(" ", $words))[2];
} while ($stringPixelWidth > $cell[$i]['width']);
$clonedActSheet->setCellValue($cell[$i]['cell'], implode(" ", $words));
$neededString = implode(" ", $lastWords);
} else {
$clonedActSheet->setCellValue($cell[$i]['cell'], $neededString);
break;
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Кидаю гет запрос, чтобы установить новый сеанс и записать куки в файл
Подскажите как работает такая строка: $app = require('/lib/base
Есть сайтНа сайте есть кнопка, при нажатии на которую я хочу, чтобы пользователь вводил своё имя и номер и эти данные отправлялись мне и я человеку...
Я беру из базы данных строки соответствующие определенному Sale_id, в которых есть sum и высчитываю определенные процент из этих sum, по следующему...