2012-09-07 33 views
1

我想從excel文件中使用PHP-ExcelReader導入數據並遇到問題。該文件由工作中的程序生成。 (雖然這是一個非官方的項目,我只是一個發燒友)使用PHP-ExcelReader時出現問題 - 壞xls文件?

當我讀取文件的數據是奇怪的。通常爲4個字符的一列中的單元格被截斷爲2.大多數其他列在截斷單元格時似乎沒有一致性,只是整個文本從不存在。如果我使用Libreoffice編輯一個單元格,保存並導入相同的文件,一切都顯示正常。代碼是這樣的:

$data = new Spreadsheet_Excel_Reader(); 
    $data->setOutputEncoding('CP1251'); 
    $data->read($filename); 
    echo "<table>\n"; 
    for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) { 
     echo "<tr>"; 
     for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) { 
      echo "<td>"; 
      if (isset($data->sheets[0]['cells'][$i][$j])) { 
       echo $data->sheets[0]['cells'][$i][$j]; 
      } 
      echo "</td>"; 
     } 
     echo "</tr>\n"; 
    } 
    echo "</table>\n"; 

的想法是將多個用戶每天至少一次產生這個文件,所以這是不現實的,讓他們保存文件,編輯和上傳之前重新保存。你有什麼建議可以導入這個文件嗎?

回答

0

我對你有同樣的麻煩。我的xls文件是從SSRS下載的。 如果我在下載後直接讀取,字符串和數字數據將作爲怪異數據檢索。 例如:在Excel 1,040,809,656.00

數據但Spreadsheet_Excel_Reader檢索[$ -1,040,809,6561,040,809,6561,040,809,6561,040,809,6561,040,809,6561,040,809,6561,040,809,656] 1,040,809,6561,040,809 ,6561,040,809,6561,040,809,656.1,040,809,6561,040,809,656

我的臨時解決方案就是打開文件並保存(因爲它沒有編輯)。