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

时间:2012-09-07 04:30:11

标签: php excel

我正在尝试使用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";

这个想法是这个文件每天至少会由多个用户生成一次,因此让他们保存文件,编辑文件并在上传前重新保存是不现实的。您对我如何导入此文件有任何建议吗?

1 个答案:

答案 0 :(得分: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, 040809656

我的临时解决方案是打开文件并保存(不进行编辑)。

相关问题