1

PHP-ExcelReaderを使用して Excel ファイルからデータをインポートしようとしていますが、問題があります。ファイルは、作業中のプログラムによって生成されます。(これは非公式のプロジェクトですが、私はただの熱狂者です)

ファイルを読み取ると、データが奇妙です。通常は 4 文字である 1 つの列のセルは 2 に切り捨てられます。他のほとんどの列は、テキスト全体が存在しないことを除いて、セルが切り捨てられた場合に一貫性がないようです。Libreoffice を使用して 1 つのセルだけを編集し、同じファイルを保存してインポートすると、すべて正常に表示されます。コードは次のようなものです。

    $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 日に 1 回は複数のユーザーによって生成されるため、アップロードする前にファイルを保存し、編集して再保存するのは現実的ではありません。このファイルをそのままインポートする方法について何か提案はありますか?

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 に答える