0

すべてのワークシートにループして、列Cのすべてをクリーンアップしようとしています。setactiveindexが範囲外であるというメッセージが表示されます。助けてください。コードを追加しましたが、ステップがありません。

<?php
include'../Classes/PHPExcel.php';
include'../Classes/PHPExcel/IOFactory.php';

$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel = $objReader->load("../upload/combined.xlsx");
ini_set('max_execution_time', 2000);
$i = 0;
while ($objPHPExcel->setActiveSheetIndex($i)){

    $objWorksheet = $objPHPExcel->getActiveSheet();
    $highestRow = $objWorksheet->getHighestRow();

    for($cl=0;$cl<$highestRow+1;$cl++){
        $clean=$objPHPExcel->getActiveSheet()->getCell('C'.$cl)->getValue();
        $cleandone=str_replace(',',"",$clean);
        $objWorksheet->setCellValue('C'.$cl,$cleandone);
        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
        $objWriter->save('../upload/combined.xlsx');
        $i++;
    }
}
echo "Done";
?>
4

1 に答える 1

0

セルを変更するたびにブックを保存しないでください

行0にアクセスしようとしないでください。存在しません...行は1から始まります

すべてのセルの後でシートカウンターを増やすのではなく、すべてのシートの後でのみ...実際、シート数を取得してforeachでループするのではなく、しばらくの間が非にアクセスしようとしたエラーを待つのではありません。 -停止する前の既存のワークシート:

<?php
include'../Classes/PHPExcel.php';
include'../Classes/PHPExcel/IOFactory.php';

$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel = $objReader->load("../upload/combined.xlsx");
ini_set('max_execution_time', 2000);

$worksheetCount = $objPHPExcel->getSheetCount();
for($i=0; $i < $worksheetCount; $i++) {
    $objPHPExcel->setActiveSheetIndex($i);
    $objWorksheet = $objPHPExcel->getActiveSheet();
    $highestRow = $objWorksheet->getHighestRow();

    for($cl=1; $cl<=$highestRow; $cl++) {
        $clean=$objWorksheet->getCell('C'.$cl)->getValue();
        $cleandone=str_replace(',',"",$clean);
        $objWorksheet->setCellValue('C'.$cl,$cleandone);
    }
}

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('../upload/combined.xlsx');

echo "Done";
?>
于 2012-11-04T11:20:20.390 に答える