2017-02-15 3 views
-3

J'ai besoin d'aide avec la bibliothèque PHPEXCEL, tout fonctionne très bien, je réussis à extraire ma requête SQL au fichier excel5, je dois donner ce fichier à la compagnie de transport afin de collecter automatiquement des informations sur les paquets , pas étonnamment le fichier Excel généré a des caractères ASCII entre chaque lettre du texte de la cellule, et lorsque le fichier Excel est importé, vous devez supprimer manuellement ces caractères. Si j'ouvre le fichier Excel, tout va bien je vois: NOM DE L'ENTREPRISE, Si j'ouvre le fichier Excel avec notepad ++, je vois les valeurs de la cellule de cette façon: C (NUL) O (NUL) M (NUL) P (NUL) A (NUL) N (NUL) YN (NUL) A (NUL) M (NUL) E Si j'ouvre à nouveau le fichier avec Excel et enregistrer, puis rouvrir avec le bloc-notes ++ Je vois le nom de l'entreprise. Je ne comprends donc pas pourquoi chaque fois que je crée un fichier Excel en utilisant PHPEXCEL, chaque lettre de tous les mots est remplie de (nul) chaque lettre. Alors, comment puis-je empêcher le fichier Excel généré d'inclure (nul) entre chaque mot ????PHPEXCEL caractères étranges sur les entrées de formulaire

De plus, si vous ouvrez le fichier Excel original généré à partir de PHPExcel, les échantillons sont également remplis avec (nul) et si vous l'ouvrez et l'enregistrez, le (nul) est parti. Toute aide serait appréciée, merci. quel est le (nul) ??? 0x00 ??? char (0) ???

ok, voici l'exemple:

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'); 

Comme vous pouvez le voir dans ce petit exemple, ce script crée un excel5 de fichier avec 2 cellules, A1 = ENTREPRISE, A2 = SAMSUNG

quand je envoyer ce fichier à la société de transport, ils importent le fichier dans leur système, mais comme vous pouvez le voir sur l'image, il y a un caractère étrange entre chaque lettre.

donc je remarqué chaque fois que j'ouvre le produit Excel5 avec notepad ++ fichier que je reçois: S (NUL) A (NUL) M (NUL) S (NUL) U (NUL) N (NUL) G

Si je sauve la sauvegarde avec Excel et puis ouvrez-le à nouveau avec notepad ++ je reçois: SAMSUNG et ce fichier est ok pour la société de transport

donc ma question est, comment dois-je éviter le fichier généré pour contenir thi « (nul) charachter entre chaque lettre ???? de l'aide?

weird characters

SAMSUNG

+0

fournir un exemple minimal, complet et vérifiable http://stackoverflow.com/help/ mcve – birdspider

+0

Les fichiers Excel au format BIFF (xls) utilisent un codage sur deux octets; c'est ce que je m'attendais à voir si je l'ouvrais dans notepad ++ ... c'est ce que vous voyez quand il est ouvert dans MS Excel qui compte .... cependant, il s'attend à ce que toutes les données insérées dans les cellules soient UTF-8 –

+0

Comment la société de transport lit-elle le fichier Excel? –

Répondre

0

Je trouve le soluion par moi-même, j'expliquer juste au cas où quelqu'un a aussi ce problème:

il n'y a pas moyen de changer la façon dont le ExcelFile est codée par PHPExcel alors j'ai compris que le problème était la lecture du fichier, j'ai fait quelques simulations et reproduire le problème, chaque fois que lire le fichier et mettre le résultat en entrée un get caractères étranges:

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

Si je mets la sortie enconding enconding comme suit:

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

les charges fichier fines, de sorte que le problème n'a pas été crée le fichier Excel, mais la lecture du fichier Excel.

Si j'imprime la variable avec ECHO je reçois: « ENTREPRISE », si je mets la variable sur l'entrée en tant que valeur que je reçois: « ENTREPRISE »

régler la sortie résout le problème, mais je voudrais savoir pourquoi la différence lorsque je mets la variable sur l'entrée en valeur, merci