PHPEXCEL表单上的奇怪字符输入

时间:2017-02-15 18:04:30

标签: character-encoding phpexcel nul

我需要一些PHPEXCEL库的帮助,一切都很好,我成功地将我的SQL查询提取到excel5文件,我需要将此文件提供给运输公司以便自动收集有关包的信息,不幸的是生成的excel文件在单元格文本的每个字母之间有一些ascii字符,并且在导入excel文件时,您需要手动删除这些字符。 如果我打开excel文件,一切都很好我看到:公司名称,如果我用notepad ++打开excel文件,我会看到这样的单元格值:C(NUL)O(NUL)M(NUL)P(NUL)A (NUL)N(NUL)YN(NUL)A(NUL)M(NUL)电子 如果我再次使用excel打开文件并保存,然后用记事本++重新打开,我会看到公司名称。 所以我不知道为什么每次我使用PHPEXCEL创建一个excel文件时,我的每个字母的每个字母都填充(nul)每个字母。 那么如何防止生成的excel文件在每个单词????

之间包含(nul)

此外,如果你打开从PHPExcel生成的原始excel文件,也会填充(nul)样本,如果你打开并保存它,那么(nul)就会消失。 任何帮助将不胜感激,谢谢。 什么是(零)?为0x00 ???炭(0)...

好的,这是一个例子:

error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
date_default_timezone_set('Europe/London');

if (PHP_SAPI == 'cli')
    die('Disponibile solo su browser');

require_once dirname(__FILE__) . '/Classes/PHPExcel.php';
    $objPHPExcel = new PHPExcel();
    $objPHPExcel->getProperties()->setCreator("Solidus")
                            ->setLastModifiedBy("Solidus")
                            ->setTitle("Import web")
                            ->setSubject("Import File")
                            ->setDescription("n.a")
                            ->setKeywords("n.a")
                            ->setCategory("n.a");
    $objPHPExcel->setActiveSheetIndex(0)
                ->setCellValueExplicit("A1", "COMPANY")
                ->setCellValue('A2', 'SAMSUNG');
$objPHPExcel->getActiveSheet()->setTitle('DDT');
$objPHPExcel->setActiveSheetIndex(0);
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="TEST.xls"');
header('Cache-Control: max-age=0');
header('Cache-Control: max-age=1');
header('Cache-Control: private',false);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
ob_end_clean();
$objWriter->save('php://output');

从这个小例子可以看出,这个脚本创建了一个带有2个单元格的文件excel5,A1 = COMPANY,A2 = SAMSUNG

当我将此文件发送到运输公司时,他们会将文件导入到他们的系统中,但正如您从图片中看到的那样,每个字母之间都有一个奇怪的字符。

所以我注意到每当我用notepad ++文件打开生成的Excel5时,我得到: S(NUL)A(NUL)M(NUL)S(NUL)U(NUL)N(NUL)G

如果我使用excel保存保存,然后使用记事本++再次打开它,我得到: 三星 这个文件适用于运输公司

所以我的问题是,我应该如何避免生成的文件在每个字母之间包含thi'(nul)charachter ???? 一些帮助?

weird characters

SAMSUNG

1 个答案:

答案 0 :(得分:0)

我自己找到了解决方案,我解释一下,万一有人也有这个问题:

无法改变PHPEXCEL编码excelfile的方式 所以我想出问题是读取文件,我做了一些模拟并重现问题,每次读取文件并将结果放入输入中得到奇怪的字符:

C�O�M�P�A�N�Y�

如果我按如下方式设置输入enconding:

$excel->setOutputEncoding('UTF-8');

文件加载正常,所以问题不是创建excel文件,而是读取excel文件。

如果我用ECHO打印变量,我会得到:“公司”, 如果我把输入变量作为值我得到:“C O M P A N Y ”

设置输出解决了问题,但我想知道为什么我把输入变量作为值时的差异,谢谢