1

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

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

4

1 回答 1

0

我和你有同样的烦恼。我的 xls 文件是从 SSRS 下载的。如果我下载后直接读取,字符串和数字数据将被检索为奇怪的数据。例如 :

data in excel 1,040,809,656.00 but Spreadsheet_Excel_Reader retrieves [$-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

我的临时解决方案是打开文件并另存为(无需编辑)。

于 2013-06-10T01:47:52.587 回答