0
我正在使用大型的excel文件我已經刪除了限制有一種方法可以更快地讀取我的單元格。我有6000行,並減少了我的wamp文件夾中的tmp文件夾。
PHPexcel單元格緩存
set_time_limit(0);
ini_set('memory_limit', '-1');
include'../Classes/PHPExcel.php';
include'../Classes/PHPExcel/IOFactory.php';
$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp;
$cacheSettings = array(' memoryCacheSize ' =>'8MB');
PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);
$objReader = new PHPExcel_Reader_Excel2007();
$objPHPExcel = $objReader->load('Book1.xlsx');
$highestRowEM = $objPHPExcel->getActiveSheet()->getHighestRow();
echo $highestRowEM;
for($i=0;$i<$highestRowEM;$i++){
$varval=$objPHPExcel->getActiveSheet()->getCell('A'.$i)->getValue();
if($varval==""){
break;
}
}
echo $i;
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('Book1.xlsx');
怎麼清理工作簿與工作表,在其中
`include'../Classes/PHPExcel.php';
include'../Classes/PHPExcel/IOFactory.php';
set_time_limit(0);
ini_set('memory_limit', '-1');
$xlsxfiles=$_SESSION['file'];
echo $xlsxfiles;
echo "<br>";
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel = PHPExcel_IOFactory::load('../upload/'.$xlsxfiles);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, "Excel2007");
////Validation
foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {
$highestRow = $worksheet-> getHighestDataRow();
$columnhighest=$worksheet->getHighestDataColumn();
$columnhighestval=array_search($columnhighest, $alphabet);
echo 'Worksheet - ' , $worksheet->getTitle()." Number of rows: ".$highestRow."<br>";
for($cl=0;$cl<$highestRow+1;$cl++){
for ($ga=1;$ga<$columnhighestval;$ga++){
$letters=strtoupper($alphabet[$ga]);
$clean=$worksheet->getCell($letters.$cl)->getValue();
$cleandone=str_replace(','," ",$clean);
$worksheet->setCellValue($letters.$cl,$cleandone);
}
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
}
}
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, "Excel2007");
$objWriter->setOffice2003Compatibility(true);
$objWriter->save('../upload/'.$xlsxfiles);
echo "Done";
數學當我行的最高數它給了我6000元。不過,我有數據僅供高達1700超越1700什麼是空白行是有辦法,我可以刪除行之外的行,並減少需要多長時間通過所有的數據行。我的tmp文件在wamp中高達20GB。 – Mervyn
PHPExcel目前不刪除行,只是清空單元格,所以它們仍然保留在工作簿中....但您可以使用$ highestRowEM = $ objPHPExcel-> getActiveSheet() - > getHighestDataRow();而不是$ highestRowEM = $ objPHPExcel-> getActiveSheet() - > getHighestRow();找到包含實際數據內容的最後一行。 getHighestRow()可以滿足其他許多情況,例如格式化但沒有數據的單元格。 –
它仍然需要很長時間來處理和添加更多的磁盤空間。我只是添加了getHighestDataRow來讀取文件,但它仍然在tmp中添加更多空間,並且在使用具有41行代碼的文件時顯示了我的結果,並給出了結果。有另一種方法可以壓縮文件。 – Mervyn