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);
替换字符串
我正在使用 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);