PHPSpreadsheet - 编写 htmlentities / 转换成相应的字符

PHPSpreadsheet - writing htmlentities / convert into correspoding chars

我正在使用 PHPSPreadsheet 1.6.0 将数据从 Neo4J 导出到 Excel 文件。

写入代码为

$spreadsheet->getActiveSheet()
            ->setCellValue('A1',$string);

只要我没有 HTML 个实体,这个方法就很好用。出于 Neo4J 的原因,我将一些文本存储在 HTML 个实体中,例如

8" ID x 12"

为人类阅读

8" ID x 12"

(引号是字符串的一部分,对 reader 很重要,因为它是度量单位(英寸),不能跳过。

我尝试使用

html_entity_decode($string,ENT_QUOTES, "utf-8");

在 excel sheet 的单元格中生成干净的输出。在 php 文件中打印时,屏幕上的输出正常显示

8" ID x 12"

在Excel文件中我总是得到

8" ID x 12" 

无论我如何格式化字符串或更改编码(也尝试过不做任何更改)。有人知道如何获取原始字符而不是 html 实体吗?

进一步调查:

当我输入文本而不是像

这样的变量时
$spreadsheet->getActiveSheet()->setCellValue( 'A1',
            html_entity_decode('8" ID x 2"',ENT_QUOTES,'UTF-8') ); 

这就像一个魅力,用 $string 这样的变量尝试同样的方法,其中 as

$string = '8" ID x 2"'

$spreadsheet->getActiveSheet()->setCellValue('A1', 
            html_entity_decode($string,ENT_QUOTES,'UTF-8')
            );

再次生成输出

8" ID x 12" 

在 excel 单元格内。出于某种原因,我无法弄清楚此函数不适用于字符串?

* 添加 *

如果我在传播sheet-action 之外组合字符串也没有关系,比如

$itemShort = html_entity_decode($string,ENT_QUOTES, "utf-8"); 

并使用 then

                $spreadsheet->getActiveSheet()
                        ->setCellValue('C'.$i,$itemShort)
                        ;

没关系,文本常量可以正常工作,变量则不行。

我以这种方式成功地使用了 HTML 个实体:

$yAxisLabel = new Title(html_entity_decode('Temp (°C)',ENT_QUOTES,'UTF-8'));

在我的例子中使用

常量字符串
html_entity_decode('8" ID x 2"',ENT_QUOTES,'UTF-8'))



变量
$string = '8" ID x 2"'
html_entity_decode($string,ENT_QUOTES,'UTF-8')

它们都不起作用。

最后我只是用
$sheet->setCellValue('A1', 'replace_this_string');
设置单元格值然后加载html 和
$html = $this->load->view('folder/view', $data, TRUE);
然后在用 dompdf 渲染 pdf 之前,我用
$new_html = str_replace('replace_this_string','"', $html);

替换字符串