我正在努力将excel转换为csv。我目前面临一个问题,即将excel文件转换为15k记录,平均需要45到50秒来计算文件的行和列。
如果我使用50k记录,那么系统崩溃。在这里,我没有做任何csv转换工作,是的,我在这里只做行和列计数。有什么方法可以解决这个问题吗?您的建议非常感谢。
require_once('../PHPExcel/Classes/PHPExcel.php');
$start = time();
$infile = 'IMPORT_DATA_15000.xlsx';
$outfile = 'csv/15000.csv';
ini_set('memory_limit', -1);
//Usage:
convertExcel2CSV($infile);
echo 'Time: ' . (time() - $start);
die;
function convertExcel2CSV($infile)
{
// Read your Excel workbook
try
{
$inputFileType = PHPExcel_IOFactory::identify($infile);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($infile);
} catch (Exception $e)
{
die('Error loading file "' . pathinfo($infile, PATHINFO_BASENAME) . '": ' . $e->getMessage());
}
// Get worksheet dimensions
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();
echo $highestColumn;
echo "====";
echo $highestRow;
}
输出:
AMK
====
15000
答案 0 :(得分:0)
如果您只需知道每个工作表中有多少行和列,那么为什么不使用
$inputFileType = PHPExcel_IOFactory::identify($infile);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$worksheetData = $objReader->listWorksheetInfo($inputFileName);
var_dump($worksheetData);
,你能学到多少东西,这真是太神奇了
还有一些方法允许您一次加载文件一个工作表,或一小部分单元格,以及其中描述的其他精彩技术....并且知道那些listWorksheetInfo()
提供详细信息的工作表详细信息将允许您使用较小的块处理文件,或通过单元格缓存减少内存使用,或者只读取数据而不是所有单元格样式