【发布时间】:2019-06-16 10:55:51
【问题描述】:
我正在使用 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"
在 Excel 文件中我总是得到
8" ID x 12"
无论我如何格式化字符串或更改编码(也尝试过没有任何更改)。任何人都有提示如何获取原始字符而不是 html 实体?
进一步调查:
当我输入文本而不是像
这样的变量时$spreadsheet->getActiveSheet()->setCellValue( 'A1',
html_entity_decode('8" ID x 2"',ENT_QUOTES,'UTF-8') );
这就像一个魅力,尝试使用像 $string where as 这样的变量
$string = '8" ID x 2"'
$spreadsheet->getActiveSheet()->setCellValue('A1',
html_entity_decode($string,ENT_QUOTES,'UTF-8')
);
再次生成输出
8" ID x 12"
在 Excel 单元格内。由于某种原因,我无法弄清楚此函数不适用于字符串?
* 已添加 *
如果我在电子表格操作之外组合字符串也没关系,比如
$itemShort = html_entity_decode($string,ENT_QUOTES, "utf-8");
然后使用然后
$spreadsheet->getActiveSheet()
->setCellValue('C'.$i,$itemShort)
;
不管怎样,一个文本常量很好用,一个变量不行。
【问题讨论】:
-
即使使用变量 $string,您的代码也能正常工作。您可以重新检查或发布一些额外的代码吗?
-
抱歉这么晚才回来,其他事情......我重新检查了所有内容,文本仍然可以正常工作,当我用变量替换字符串常量时,它给了我相同的行为。之后我现在使用 str_replace ,但这只是一种解决方法。我不知道为什么使用变量会失败。我还尝试将额外的字符串组合起来,然后将该字符串插入到电子表格操作中,得到相同的错误。这对我使用的所有 PC 都有效,因此我敢于排除本地问题。
标签: phpspreadsheet