Вставить перевод строки в ячейке Excel

491
09 мая 2017, 06:45

Пытаюсь взять значение из ячейки, вставить вместо запятых перевод строки в ячейке, вернуть обратно.

Получаем текст в ячейке А1

$ltr='A1';
$vle=$spreadsheet->getActiveSheet()->getCell($ltr);

Далее ищу запятые и меняю на \n.

$t=explode(', ', $vle);
if (count($t)>1) $vle=implode('\n', $t);

Возвращаю обратно, пытаюсь заменить \n. В документации и тут это работает. Но у меня при таком порядке действий - нет.

> $spreadsheet->getActiveSheet()->getCell($ltr)->setValue($vle);
> $spreadsheet->getActiveSheet()->getStyle($ltr)->getAlignment()->setWrapText(true);

Пытаюсь добиться следующего. Слева \n добавил сразу же для наглядности. Но оно там сразу или нет - по факту ничего не меняет. Не работает.

Также пробовал использовать char(10). Но тут странное происходит. Например, если попробовать вставить в ячейку ="hello"&char(10)&"world", то вставится всё до второго &. Т.е. вставится только ="hello"&char(10)

Помогите, разобраться, пожалуйста. Можно сказать все сложности решил, а осталось вот это. И не могу никак сдвинуться с мёртвой точки.

Answer 1

В документации в разделе строки можно почитать про одинарные кавычки и двойные кавычки (еще про heredoc и nowdoc, но сейчас это не важно). Советую ознакомиться с описанием и особенно с их отличием между собой.

Там же можно увидеть описание и замечание в разделе одинарных кавычек:

Чтобы использовать одинарную кавычку внутри строки, проэкранируйте ее обратным слешем (). Если необходимо написать сам обратный слеш, продублируйте его (\). Все остальные случаи применения обратного слеша будут интерпретированы как обычные символы: это означает, что если вы попытаетесь использовать другие управляющие последовательности, такие как \r или \n, они будут выведены как есть вместо какого-либо особого поведения.

Замечание: В отличие от синтаксиса двойных кавычек и heredoc, переменные и управляющие последовательности для специальных символов, заключенных в одинарные кавычки, не обрабатываются.

И в разделе двойных кавычек:

Если строка заключена в двойные кавычки ("), PHP распознает управляющие последовательности специальных символов.

Исходя из этого делаем вывод, что вам нужно писать не так:

$vle = implode('\n', $t);

а вот так:

$vle = implode("\n", $t);
READ ALSO
Не работает websocket в фоне с nohup

Не работает websocket в фоне с nohup

Я использую библиотеку ratchetПри запуске без nohup websocket работает без нареканий, при запуске с nohup command & выдает

263
Заполнить массив значениями из БД для вывода в зависимый выпадающий список PHP

Заполнить массив значениями из БД для вывода в зависимый выпадающий список PHP

ЗдравствуйтеПомогите, пожалуйста, заполнить массив $city значениями из БД для вывода в зависимый выпадающий список

532
не работает переход по страницам в codeigniter 3 HMVC

не работает переход по страницам в codeigniter 3 HMVC

При загрузке проекта нормально работает главная страница, но на любой переход высвечивается эта ошибкаИспользую mac и встроенный Apache

297
Не вносятся данные в таблицу

Не вносятся данные в таблицу

Что не так? Все названия правильные, кавычки тоже вроде, но данные не вносятсяЗначения переменных тоже передается( делал echo($Query), чтоб проверить

240