phpExcel toRichTextObject跳过换行符

phpExcel toRichTextObject跳过换行符,php,phpexcel,richtext,Php,Phpexcel,Richtext,我无法在Excel文件中正确转录html文本。 我查看了HTML.php并尝试将breakTag函数改为插入“\n”而不是php\u EOL(我在mac上工作),但它也不起作用。 如果我将此函数改为插入“BBBB”,我可以看到该字符串出现在我的单元格中,因此该函数被正确调用。 我还尝试了42richText.php中给出的示例,但它也不起作用。这三条线的颜色正确,但没有特征线。 这是我的密码 $wizard = new PHPExcel_Helper_HTML; $cellText = $wiz

我无法在Excel文件中正确转录html文本。 我查看了HTML.php并尝试将breakTag函数改为插入“\n”而不是php\u EOL(我在mac上工作),但它也不起作用。 如果我将此函数改为插入“BBBB”,我可以看到该字符串出现在我的单元格中,因此该函数被正确调用。 我还尝试了42richText.php中给出的示例,但它也不起作用。这三条线的颜色正确,但没有特征线。 这是我的密码

$wizard = new PHPExcel_Helper_HTML;
$cellText = $wizard->toRichTextObject('<p>First line</p><p>Second line</p>');
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($colText.$Row, $cellText);
$objPHPExcel->getActiveSheet()->getStyle($colText.$Row)->getAlignment()->setWrapText(true);
$objPHPExcel->getActiveSheet()->mergeCells($colText.$Row.':'.$colText.($Row+ $tableRows));
$wizard=newphpexcel\u Helper\u HTML;
$cellText=$wizard->toRichTextObject('p>第一行

第二行

'); $objPHPExcel->setActiveSheetIndex(0)->setCellValue($colText.$Row,$cellText); $objPHPExcel->getActiveSheet()->getStyle($colText.$Row)->getAlignment()->setWrapText(true); $objPHPExcel->getActiveSheet()->mergeCells($colText.$Row.':'。$colText.($Row+$TABLEOWS));
由于保留换行符比文本充实更容易理解,因此我编写了一个小函数来去除html标记,但保留换行符:

function getRichTextFromHtml($text){
$text = str_replace("</p>","</p>\n", $text);
$text = preg_replace("/(<\/?)(\w+)([^>]*>)/", " ",$text);
$text = html_entity_decode($text, ENT_COMPAT, 'UTF-8');
return $text;
函数getRichTextFromHtml($text){ $text=str_replace(“

”、“

\n”、$text); $text=preg_replace(“/(]*>)/”,“”,$text); $text=html_entity_decode($text,ENT_COMPAT,'UTF-8'); 返回$text; }

$cellText=getRichTextFromHtml('第一行

第二行

'); $objPHPExcel->setActiveSheetIndex(0)->setCellValue('H'。$Row,$cellText); $objPHPExcel->getActiveSheet()->getStyle('H'.$Row)->getAlignment()->setWrapText(true); $objPHPExcel->getActiveSheet()->mergeCells('H'.$Row'.:'.'I'($Row+$tableRows));
通过调用此函数,我可以在单元格中正确地分割行,但我没有使用粗体和其他格式

有人能帮忙吗?
感谢

无法复制,无论我是在
breakTag()
方法中使用
“\n”
还是
PHP\u EOL
。严格地说,它应该是
“\n”
,而不是
PHP\u EOL
,因为Excel格式在单元格中实际存储的换行符是。。。。我的大部分测试都是在Linux下进行的,使用不同版本Excel的Windows虚拟机检查MS Excel输出,并且没有Mac或Excel for Mac,因此无法在该平台下进行具体测试。您可以尝试将
breakTag()
方法更改为
$this->stringData=rtrim($this->stringData)吗。“\n”,以防任何尾随空格影响newlineHi标记,我已尝试按照您的指示更改breakTag,但它不会更改任何内容。我将单元格的内容复制到一个文本文件中,它被分成两行。因此\n已正确就位,但未被mac上的Excel解释。能否使用常规方法创建包含换行符(
“\n”
)字符的富文本运行?我想我找到了一个解决方案,如中所述
    $cellText = getRichTextFromHtml('<p>First line</p><p>Second line</p>');
    $objPHPExcel->setActiveSheetIndex(0)->setCellValue('H'.$Row, $cellText);
    $objPHPExcel->getActiveSheet()->getStyle('H'.$Row)->getAlignment()->setWrapText(true);
    $objPHPExcel->getActiveSheet()->mergeCells('H'.$Row.':'.'I'.($Row+ $tableRows));