PhpExcel new line in cell

autumnrustle picture autumnrustle · May 7, 2017 · Viewed 9.3k times · Source

What I do:

  1. query data from db
  2. explode data and insert \n
  3. prepare array
  4. open tamplate
  5. insert array into tamplate
  6. try to replace \n with new line

How can I found \n and insert new line? For example I have in A1 next text "One\nTwo". I read text from A1

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

After this I try to insert text in A1 again in A1 and replace \n with new line in one cell

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

But it does not work for my.

For example: enter image description here

So, if I open tamplate with text I can't replace \n in cells. What can I do?

Upd. I try use char(10) and insert formula (for example) ="hello"&char(10)&"world" But inserted only ="hello"&char(10)

Answer

Mark Baker picture Mark Baker · May 8, 2017

If you're asking about this issue on the PHPspreadsheet github issues log then this is a problem with your understanding of PHP strings.

$dataArray = [
    ['2010', 'Q1', 'United\nStates', 790],
    ['2010', 'Q2', 'United States', 730],
    ['2010', 'Q3', 'United States', 860]
]

A '\n' in single quotes is treated as a literal \n; a "\n" in double quotes is treated as a new line character. So either build your array using double quotes:

$dataArray = [
    ['2010', 'Q1', "United\nStates", 790],
    ['2010', 'Q2', "United States", 730],
    ['2010', 'Q3', "United States", 860]
]

or convert the literal \n to a new line using str_replace:

$modified = str_replace('\n', "\n", $original);