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

时间:2019-01-22 22:17:35

标签: phpspreadsheet

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

写代码是

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

只要我没有HTML实体,这就可以很好地工作。由于Neo4J的原因,我在

之类的HTML实体中存储了一些文本
8" ID x 12"

为人类阅读

8" ID x 12"

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

我尝试使用

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

在excel工作表的单元格中产生干净的输出。当在显示预期的php文件中打印时,屏幕上的输出正常。

8" ID x 12"

我总是在Excelfile中得到

8" ID x 12" 

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

进一步调查:

当我输入文本而不是像

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

这就像一个魔术,可以像$ string这样的变量来尝试

$string = '8" ID x 2"'

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

再次生成输出

8" ID x 12" 

在Excel单元格内。由于某种原因,我无法弄清楚此功能不适用于字符串吗?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

在我的情况下,

使用

常量字符串
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 = $this->load->view('folder/view', $data, TRUE);
加载了html,然后用dompdf渲染pdf,我将字符串替换为
$new_html = str_replace('replace_this_string','"', $html);