5

私が持っているいくつかのファイルでの PHPExcel の動作には、やや当惑しています。ファイルには約が含まれています。3000 行のデータですが、PHPExcel によると、最後に使用された行は 65535 です。ファイルから数行を切り取って新しいファイルに貼り付けようとしましたが、役に立ちませんでした。Excel5 形式でも Excel2007 形式でも、常に同じ結果になります。

ここでエラーを見つけるためのアイデアはありますか?

コード:

    $cr=$xls->getActiveSheet()->getHighestRow();
    $cn=PHPExcel_Cell::columnIndexFromString($xls->getActiveSheet()->getHighestColum‌​n()); 
    for ($z=2; $z<=$cr; $z++) { 
        $class=($z%2)?"odd":"even"; 
?> 
    <tr class="<?php echo $class; ?>"> 
    <?php for ($s=0; $s<$cn; $s++) { 
        $tmp=$xls->getActiveSheet()->getCellByColumnAndRow($s,$z)->getValue();?> 
        <td><?php echo $tmp; ?></td> 
    <?php } ?> </tr> 
<?php } ?>
4

4 に答える 4

6

必要なのは空白のセルだけで、最後の列/行は予想よりもはるかに高くなる可能性があります。印刷レイアウトやスタイルでさえ、保存されている最高値を改ざんする可能性があります。MS Excelでファイルを開き、Ctrl-Endを押すと、Excelが認識する最後のセルに移動します。

getHighestRow()およびgetHighestColum()に加えて、実際にセルデータを含む最も高い行と列を識別する(より遅い)getHighestDataRow()およびgetHighestDataColumn()メソッドもあります。

于 2012-06-19T12:26:21.063 に答える
1
$objPHPExcel->setActiveSheetIndex(0)->getHighestRow();

また

$objPHPExcel->setActiveSheetIndex(0)->calculateWorksheetDimension();

A1:AC2048 のような文字列として範囲を返します

ただし、末尾の空白の行と列はこれらに含まれます。

または、反復子を使用して既存の行と列をループし、ワークシートの使用範囲内の各セルを取得できます。例については、製品ディストリビューションの /Tests/28iterator.php を参照してください。反復子は、空白を無視するように設定できます。

ソース:

PHPExcelを使用してExcelファイルから読み取る行と列の数を調べる方法は?

于 2012-06-19T09:14:18.970 に答える
1

マーク・ベイカーは正しい。そのため、次の手順で最後に問題を修正しました。

  1. データがある最後の行の後の最初の空白セルから ctrl+end を実行します。たとえば、データの最後の行が A3 から D3 の場合。セル A4 で ctrl_end を実行します

    • これにより、空白行の数が強調表示されます
  2. 選択した行 (次の最初の手順で選択した行) を右クリックし、[削除] を選択します。

  3. ポップアップが開きます。「行全体」を選択し、OKボタンをクリックします

したがって、Excel データをロードするために必要なコードが何であれ、データを含む行のみが読み取られます。

于 2017-09-20T20:31:23.463 に答える
-1

これはエラーではありません。「空の」スプレッドシートには、まだ多くの空のセルが含まれています。通常、Excel には 65536 行と 256 列があります。

于 2012-06-19T09:08:13.283 に答える