2017-02-15 48 views
-3

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

另外,如果你打开从PHPExcel生成的原始excel文件,样本也被填充(nul),如果你打开并保存它,(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 =公司,A2 = SAMSUNG

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

所以我注意到每次打开生成Excel5与记事++文件时间我得到: S(NUL)A(NUL)M(NUL)S(NUL)U(NUL)N(NUL)G

如果我保存Excel中的保存,然后用记事本打开它再次++我得到: SAMSUNG 并且此文件是确定的运输公司

所以我的问题是,我应该如何避免产生含有THI文件“( nul)每个字母之间的charachter? 有些帮助?

weird characters

SAMSUNG

+0

提供了一个最小的,完整的和可验证的示例http://stackoverflow.com/help/ mcve – birdspider

+0

BIFF格式的Excel文件(xls)使用双字节编码;所以这就是我期望看到的,如果我用记事本++打开它......这是你在MS Excel中打开时看到的事情......但是,它确实希望插入到单元格中的所有数据都是UTF-8 –

+0

运输公司如何阅读Excel文件? –

回答

0

我发现soluion由我自己,我解释一下,以防万一人也有这样的问题:

没有办法改变excelfile由PHPEXCEL编码方式 所以我想通过阅读文件,我做了一些模拟和重现问题,每次读取文件,并把结果输入一个奇怪的字符输入:

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

如果我设置输出enconding enconding如下:

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

文件加载罚款,所以这个问题是不创建Excel文件,但读取Excel文件。

如果我打印变量,ECHO,我得到:“公司”, 如果我把变量输入的值,我得到:“本公司”

设置输出可以解决问题,但是我想知道为什么当我将变量作为值输入时,区别是什么,谢谢