2016-06-23 55 views
0

當我使用函數getValue()獲取單元格值時,如果單元格包含特殊字符,是否有任何解決方案來獲取內容,即使包含非UTF -8個字符?我打算在調用getValue()函數之前解析它們。我會很感激任何幫助。PHPEXCEL如何獲取單元格值,即使使用特殊字符

$objPHPExcel = $objReader->load($filename); 
     $objWorksheet = $objPHPExcel->getActiveSheet(); 
     $i=0; 
     $record = array(); 

     foreach ($objWorksheet->getRowIterator() as $row) 
     { 
      $cellIterator = $row->getCellIterator(); 
      $cellIterator->setIterateOnlyExistingCells(false); 
      foreach ($cellIterator as $cell) 
      { 
       $val = $cell->getValue(); 
       // $val returns false or empty string ('') when the cell has special characters like ñ or another one 
       $record[$i][] = $val; 
      } 
      $i++; 
      if($i==$vueltas) 
       return $record; 
     } 
     return $record; 
    } 

我試着用utf8_decode函數和str_replace來解析特殊字符但什麼也沒有發生,它仍然返回false。我認爲這是一個讀者問題,但我找不到管理它的代碼。

感謝您的幫助!

+0

請給出一個例子,XLS文件中存儲了什麼樣的字符和編碼。 – Bjoern

+1

PHPExcel應該總是返回UTF-8數據;如果文件是標準的電子表格格式文件,那麼它使用的任何字符集應自動轉換爲UTF-8。但是,如果它是一個CSV文件(或者有時候也是HTML),那麼該文件不包含有關charset的信息,所以如果文件不是UTF-8,那麼你必須特別告訴Reader該文件使用什麼字符集。setInputEncoding( )'方法 –

+0

我從.csv獲取值,並且某些單元格具有帶特殊字符的客戶端名稱,如ñ或Ñ。 – Gonsabb

回答

2

我決定將這個問題:

$objReader = PHPExcel_IOFactory::createReader('CSV'); 
$objReader->setInputEncoding('ISO-8859-1'); 

那是頭字符集信息的問題。

感謝Mark Ba​​ker的幫助!