麻烦使用PHP-ExcelReader – 糟糕的xls文件?

我试图使用PHP-ExcelReader从Excel文件导入数据,并遇到麻烦。 该文件由工作中的程序生成。 (虽然这是一个非官方的项目,我只是一个发烧友)

当我读取文件时,数据很奇怪。 通常为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"; 

这个想法是这个文件每天至less会由多个用户生成一次,所以在上传之前保存文件,编辑并重新保存是不现实的。 你有什么build议,我怎样才能导入这个文件?

我也有同样的麻烦 我的xls文件从SSRS下载。 如果我在下载之后直接读取,string和数字数据将作为奇怪的数据被检索。 例如 :

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

我的临时解决scheme就是打开文件并保存(不用编辑)。