Я пытаюсь создать файл Excel с помощью PHPExcel. Исходные данные представляют собой массив ассоциативных массивов, каждый из которых хранит имя и адрес:
Array ( [0] => Array ( [name] => Joe Bloggs [address] => 10 Main St Bayside Big Town ABC123 ) [1] => Array ( [name] => Mary Bloggs [address] => 18 Bridge St Riverside Small Town XYZ987 ) : : )
Как вы можете видеть, адреса содержат символы новой строки. Я пишу эти данные в файл Excel, используя PHP, используя следующий код:
$phpExcel = new PHPExcel(); $phpExcel->setActiveSheetIndex(0); $phpExcel->getActiveSheet()->getCell('A1')->setValue("Name"); $phpExcel->getActiveSheet()->getCell('B1')->setValue("Address"); $index = 2; foreach($rows as $row) { $phpExcel->getActiveSheet()->getCell('A'.$index)->setValue($row["name"]); $phpExcel->getActiveSheet()->getCell('B'.$index)->setValue($row["address"]); $index++; } $objWriter = PHPExcel_IOFactory::createWriter($phpExcel, 'Excel2007'); $filename = "outputs/excel/data.xlsx"; $objWriter->save($filename);
Однако полученный файл Excel не содержит символов новой строки, которые я хочу сохранить.
Name Address Joe Bloggs 10 Main St Bayside Big Town ABC123 Mary Bloggs 18 Bridge St Riverside Small Town XYZ987 ...
Из комментариев на веб-сайте PHPExcel кажется, что это должно быть возможно, но я не могу понять, как это сделать.
Может кто-нибудь мне помочь? БЛАГОДАРЮ.
Вы используете «\ n» в качестве символа возврата; и ячейка должна быть настроена на wrap
;
$objPHPExcel->getActiveSheet() ->getCell('A1') ->setValue("First line\nSecond Line\nThird Line"); $objPHPExcel->getActiveSheet() ->getStyle('A1') ->getAlignment() ->setWrapText(true);
как описано в разделе 4.6.6 документации разработчика
Попробуйте использовать это вместо «\ n»:
$lfcr = chr(10) . chr(13);
затем замените «\ n» всюду на $ lfcr, например:
setValue("First line". $lfcr . "second Line" . $lfcr . "Third Line");