0

PHPExcel コードプレックスが空のセルを値セルと見なす場合がある Excel ファイルを読んでいます。例えば:

Excel に 128 列がある場合、最大値は DV であり、Excel とユーザーの要件によって異なります。最大 126 列です。最小は 8 列です。また、最大行は 250 です。

----------------------
A | B | ..... |DU |DV|
----------------------

次のコードを使用して Excel をロードしました。

   set_include_path(get_include_path() . PATH_SEPARATOR . 'Classes/');
   include 'PHPExcel/IOFactory.php';    

   $inputFileName = $target_file; 
    try {
            $inputFileType = PHPExcel_IOFactory::identify($inputFileName);
            $objReader = PHPExcel_IOFactory::createReader($inputFileType);
            $objPHPExcel = $objReader->load($inputFileName);
    } catch(Exception $e) {
        die('Error loading file "'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage());
    }

問題は、PHPExcel が間違った最大列と行を表示していることです。最大列は 126 (DV) で、最大行は 245 です。

しかし、この次のコードを使用すると、間違った値が得られます:

 $lastColumn =  $objPHPExcel->setActiveSheetIndex(0)->getHighestColumn();
 $lastRow    =  $objPHPExcel->setActiveSheetIndex(0)->getHighestRow();

126 の代わりに、最大列として1800+ ( AMK ) を取得し、最大行は 65536 として表示されます。

この問題を解決するにはどうすればよいですか?

新しい Excel をクリアして作成する場合でも、これが発生することがあります。

Excelを読み取る(ロードする)前に最大の列と行を設定する方法、または空のセルを回避する方法は?

4

1 に答える 1

1

行と列は、単純にコンテンツを持っているのではなく、何か (スタイルや印刷情報を含む) を含んでいる場合にカウントさgetHighestColumn()れます。getHighestRow()これらの値は、スプレッドシートの読み込み時にも計算されるため、後でワークシートに新しい行または列を追加すると、正確でなくなる可能性があります。

代わりに、メソッドgetHighestDataColumn()getHighestDataRow()メソッドを使用して、セルに実際にデータ値が含まれる最上位の行と列を返します。効率は劣りますが、呼び出されたときに実際に最高のセル参照を計算します。これは遅くなりますが、常に正確です。

また、空のように見えるセルに、null または空の文字列が含まれている可能性があることにも注意してください。これはまだデータ値です。

于 2015-11-05T10:59:41.470 に答える