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