在PHPExcel中保留换行符

时间:2013-07-27 16:12:04

标签: php phpexcel

我正在尝试使用PHPExcel创建Excel文件。源数据是一个关联数组数组,每个数组都存储一个名称和地址:

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
        )
    :
    :
)

如您所见,地址包含换行符。我使用以下代码使用PHP将此数据写入Excel文件:

$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网站的comments开始,似乎应该可以这样做,但我无法弄清楚如何做到这一点。

任何人都可以帮助我吗?感谢。

2 个答案:

答案 0 :(得分:6)

尝试使用此代替" \ n":

$lfcr = chr(10) . chr(13);

然后替换" \ n"每个地方都有$ lfcr,像这样:

setValue("First line". $lfcr . "second Line" . $lfcr . "Third Line");

答案 1 :(得分:4)

您使用“\ n”作为返回字符;并且需要将单元格设置为wrap;

$objPHPExcel->getActiveSheet()
    ->getCell('A1')
    ->setValue("First line\nSecond Line\nThird Line");
$objPHPExcel->getActiveSheet()
    ->getStyle('A1')
    ->getAlignment()
    ->setWrapText(true);

,如开发人员文档的第4.6.6节所述