PHPExcel ile 20MB + Excel dosyalarından çalışma sayfası adlarını almak için bir yolu var mı?

0 Cevap php

I PHPExcel Excel dosyaları üzerinden veri okumak için kullanıyorum.

Aşağıdaki kod ile, ben sadece bir kaç saniye içinde one particular worksheet bir 3MB Excel dosyasının okumak mümkün duyuyorum. Güzel çalışıyor.

Ancak, şimdi var 27MB ve ben dışarı veri almak gerekiyor 88MB Excel dosyaları. Onlar bile OpenOffice onları açamıyor o kadar büyüktür.

Ben bir sayfa yüklediğinizde yerine bir isim bir dizin numarasını kullanabilirsiniz bulduk, ancak bu tutarsız, EG görünüyor setLoadSheetsOnly(1) Bana bir error verirken belli bir Excel dosyasında setLoadSheetsOnly(0) dosyasında dört çalışma vardı rağmen bana third sayfası verdi . Böylece unreliable nedense görünmektedir.

Is there a way I can read out the names of the worksheets from a large file so that I can access only one of its worksheets at a time?

        $objReader = PHPExcel_IOFactory::createReaderForFile("data/" . $file_name);
        $objReader->setLoadSheetsOnly(array($sheet_name));
        $objReader->setReadDataOnly(true);
        $objPHPExcel = $objReader->load("data/" . $file_name);

        echo '<table border="1">';
        for ($row = 1; $row < $number_of_rows; $row++) {
            echo '<tr>';
            for ($column = 0; $column < $number_of_columns; $column++) {
                $value = $objPHPExcel->setActiveSheetIndex(0)->getCellByColumnAndRow($column, $row)->getValue();
                echo '<td>';
                echo $value . '&nbsp;';
                echo '</td>';
            }
            echo '</tr>';
        }
        echo '</table>';
        die;

ADDENDUM:

Ben yakın alır bazı kod bulundu, ancak bu her zaman doğru, olabilir mesela görünmüyor burada bir 27MB dosyasında ikinci sayfasını cevapsız:

alt text

ve burada sadece üçüncü çalışma var ve 3 diğerleri cevapsız:

alt text

$objReader = PHPExcel_IOFactory::createReaderForFile("data/" . $file_name);
$objReader->setLoadSheetsOnly(0);
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load("data/" . $file_name);

echo $objPHPExcel->getSheetCount(), ' worksheets<hr/>';
$loadedSheetNames = $objPHPExcel->getSheetNames();
foreach ($loadedSheetNames as $sheetIndex => $loadedSheetName) {
    echo $sheetIndex, ' -> ', $loadedSheetName, '<br />';
}
die;

0 Cevap