2017-02-15 49 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,我得到:「公司」, 如果我把變量輸入的值,我得到:「本公司」

設置輸出可以解決問題,但是我想知道爲什麼當我將變量作爲值輸入時,區別是什麼,謝謝