2010-12-28 4 views
3

Ich habe PHPExcel 1.7.5 Production heruntergeladen.Warum habe ich keinen Zugriff auf setReadDataOnly() oder enableMemoryOptimization() in PHPExcel?

Ich möchte setReadDataOnly() verwenden und enableMemoryOptimization() als discussed in their forum here und in stackoverflow questions. Wenn ich sie benutze, bekomme ich einen Call to undefined method Fehler.

Gibt es eine andere Version oder ein Plugin oder eine Bibliothek, die ich nicht installiert habe? Was muss ich tun, um auf diese Methoden zuzugreifen?

$objPHPExcel = PHPExcel_IOFactory::load("data/".$file_name); 
$objPHPExcel->setReadDataOnly(true); //Call to undefined method 
$objPHPExcel->enableMemoryOptimization(); //Call to undefined method 

Antwort

3

Sie bereits identifiziert haben, warum setReadDataOnly() nicht funktioniert.

enableMemoryOptimization() ist keine gültige Methode für eine Klasse in PHPExcel. Wenn Sie den Speicher optimieren möchten, aktivieren Sie eine der Zellencachespeichermethoden vor Laden einer beliebigen Datei oder Instanziieren eines neuen PHPExcel-Objekts.

$inputFileType = 'Excel2007'; 
$inputFileName = 'testBook.xlsx'; 

$r = PHPExcel_CachedObjectStorageFactory::initialize(PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp); 
if (!$r) { 
    die('Unable to set cell cacheing'); 
} 

$objReader = PHPExcel_IOFactory::createReader($inputFileType); 
$objReader->setReadDataOnly(true); 
$objPHPExcel = $objReader->load($inputFileName); 

EDIT

Der Faden auf enableMemoryOptimization(), die Sie in Ihrer Frage verknüpfen, ist von einem Benutzer, der diese in PHPExcel auf eine Weise gebaut wollte, dass die meisten der Klasse der Funktionalität brach, während der Verbesserung der Leistung für seinen spezifischen Anwendungsfall (auf Kosten der meisten anderen Nutzer); und das hätte zwei inkompatible Methoden zur Manipulation von Daten innerhalb der Bibliothek ergeben. Als solche habe ich es abgelehnt.

0

ok, es ist nur eine Syntax Problem, müssen Sie einen Leser machen, z.B .:

$reader = PHPExcel_IOFactory::createReaderForFile("data/".$file_name); 
$reader->setReadDataOnly(true); 
//$reader->enableMemoryOptimization(); //Call to undefined method 
$objPHPExcel = $reader->load("data/".$file_name); 
+0

Korrekt. setReadDataOnly() ist eine Methode des Reader-Objekts, nicht des PHPExcel-Objekts. Die statische PHPExcel_IOFactory :: load() -Methode erstellt ein Reader-Objekt und lädt die Datei mit diesem Reader mit den Standardeinstellungen, gibt aber das vollständig geladene PHPExcel-Objekt zurück. Wenn Sie nur Daten lesen möchten, müssen Sie den Reader manuell erstellen, die entsprechenden Methoden für Ihre Einstellungen aufrufen und dann die Methode load() manuell aufrufen. –

Verwandte Themen