-2

我需要 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)E 如果我再次使用 excel 打开文件并保存,然后使用记事本++ 重新打开,我会看到公司名称。所以我不明白为什么每次我使用 PHPEXCEL 创建一个 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

当我将此文件发送给运输公司时,他们将文件导入到他们的系统中,但是从图片中可以看出,每个字母之间都有一个奇怪的字符。

所以我注意到每次我用记事本++文件打开生成的Excel5时都会得到:S(nul)A(nul)M(nul)S(nul)U(nul)N(nul)G

如果我用 excel 保存保存,然后用记事本 ++ 再次打开它,我会得到:SAMSUNG,这个文件对于运输公司来说是可以的

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

奇怪的字符

三星

4

1 回答 1

0

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

没有办法改变 excelfile 由 PHPEXCEL 编码的方式,所以我发现问题在于读取文件,我做了一些模拟并重现了问题,每次读取文件并将结果放入输入中时都会得到奇怪的字符:

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

如果我将输出编码设置如下:

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

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

如果我用 ECHO 打印变量,我得到:“COMPANY”,如果我将变量作为值输入,我得到:“C�O�M�P�A�N�Y”

设置输出解决了问题,但我想知道为什么当我将变量作为值放在输入上时会出现差异,谢谢

于 2017-02-17T14:21:12.697 回答