Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Вопрос по PHPExcel


petr34

Recommended Posts

Правда не знаю куда лучше это написать, пришлось в песочницу. Прошу помощи кто разбирается, уже черт знает сколько времени бьюсь с мануалами и методом тыка.

 

В общем имеем генерацию прайса эксель из под магазина. Через PHPExcel.  Все сделал, все везде работает. НО когда вывожу описание там пропадают переносы строк текста, тоесть например в карточке товара текст:

Цитата

 

Характеристики

  • Длина 53353
  • Высота 32423
  • Ширина 128274

 

  •  

Выводится это все в прайс в итоге кашей вида:

Цитата

ХарактеристикиДлина 53353Высота 32423Ширина 128274

Тоесть жесть.

 

 

Что сейчас в настройках отвечает за вывод:

 

$this->sheet->setCellValueByColumnAndRow($j+$this->delim, $i, strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')));

 

Пробовал без strip_tags - выводится текст со всеми тегами, тоже не то

 

 

 

Что делать, куда копать? НЕ очень разбираюсь, но методом чтения мануалов и тыка иногда помогает..но в этот раз чтото застрял.

Надіслати
Поділитися на інших сайтах


А почитать мануал по php?
https://www.php.net/manual/ru/function.html-entity-decode.php
Или или encode или вообще убрать decode.
strp_tags никогда не отработает в такой конфигурации

Надіслати
Поділитися на інших сайтах

57 минут назад, splka сказал:

Или или encode или вообще убрать decode.

 

вообще убрал,

$this->sheet->setCellValueByColumnAndRow($j+$this->delim, $i, $result['description'],);

 

Теперь такая портянка

Цитата

<p>Преимущества<br></p><ul><li>Большой экран

 

Что я делаю не так? Мануал читал но лыжи не едут

Надіслати
Поділитися на інших сайтах


2 минуты назад, petr34 сказал:

 

вообще убрал,

$this->sheet->setCellValueByColumnAndRow($j+$this->delim, $i, $result['description'],);

 

Теперь такая портянка

 

Что я делаю не так? Мануал читал но лыжи не едут

Гммм, я протупил.
Верните обратно плиз.
В личку постучитесь, разберёмся

Надіслати
Поділитися на інших сайтах

В общем как и бывает обычно, только после поста почемуто всплывают хорошие идеи и летят статья в гугле нужные)) разобрался.

Если у когото будет такаяже проблема. Лечится так:

 

Это

$this->sheet->setCellValueByColumnAndRow($j+$this->delim, $i, strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')));

Меняем на это

$this->sheet->setCellValueByColumnAndRow($j+$this->delim, $i, str_replace(array("<br>"), "\r\n", strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8'), '<br>')));

 

Смысл какой:

html_entity_decode - возвращает нам текст с тегами html. То что нужно

strip_tags - режет все теги и оставляет чистый текст. Но нам нужен тег переноса <br> чтобы его заменить потом на тег переноса экселя "\r\n". Прописываем исключения в конце и получаем чистый текст но с тегом <br> там где он был в исходнике

str_replace - меняем <br>  на \r\n

 

Профит! В тексте где был перенос строки в исходнике - будет перенос в экселе.

Такимже способом можно добавить другие теги.

 

 

 

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.