9

ライブラリPHPExcelを使用して、Excelファイルのデータを読み取っています。私が抱えている問題は、次のようなものを使用するときです。

$obj = PHPExcel_IOFactory::load($file);
$data = $obj->getActiveSheet()->toArray(null,true,true,true);

ファイルを読み込んでその内容を配列に変換するために、配列内の Excel ファイルのすべての列と行を、データが含まれていないものも含めて取得します。ライブラリPHPExcelに、データが含まれていないExcelシートのセルを無視するように指示するメソッドまたは何かがありますか? ( my に空の連想配列をたくさん持つ代わりに$data

4

3 に答える 3

15

問題が実際のデータの後にある空の列を取得することにあり、これらを回避したい場合は、次のようにすることができます。

$maxCell = $sheet->getHighestRowAndColumn();
$data = $sheet->rangeToArray('A1:' . $maxCell['column'] . $maxCell['row']);

これは、実際のデータを含む領域のみを表す配列を返します。

于 2013-02-20T14:06:09.810 に答える
3

いいえ、ありません。toArray() メソッドは、空のセルを表す最初の引数 (NULL) を返します。その後、array_filter() などの標準の PHP 配列関数を適用して、空のセルを削除できます。

foreach($data as $key => &$row) {
    $row = array_filter($row,
                        function($cell) {
                            return !is_null($cell);
                        }
           );
    if (count($row) == 0) {
        unset($data[$key]);
    }
}
unset ($row);

これにより、NULL (空の) 値であるすべてのセルと、空のセルだけで構成されるすべての行が削除されます。配列キーが保持されるため、配列キーは引き続きセル参照を提供します。

空の文字列を含むセルは null セルではないことに注意してください。したがって、これらは保持されますが、array_filter() コールバックを変更してそれらを削除することもできます。

于 2012-09-05T20:37:11.380 に答える