PHPEXCEL解决行数超过65536不显示问题

起因自然是导出数据到excel文件时,数据缺少现象。

百度讲解是将xls文件另存为xlsx文件。

除了这里的原因,还有一点是phpExcel存在两个写入类PHPExcel_Writer_Excel2007和PHPExcel_Writer_Excel5,而只有PHPExcel_Writer_Excel2007支持超过65536行写入。

大致示例代码如下:

        $objPHPExcel = new PHPExcel();
		// 操作第一个工作表
		$objPHPExcel->setActiveSheetIndex(0);
		// 设置sheet名
		$phpExcelSheet = $objPHPExcel->getActiveSheet();
		$fileName = date('Y-m-d') . 'MoreTest';
		$phpExcelSheet->setTitle($fileName);

		// 冻结表头
		//$phpExcelSheet->freezePane('A2');
		// $phpExcelSheet->getStyle('A1:R1')->getFont()->setBold(true); //表头加粗

		// 设置保存格式
		$ext = '.xlsx';

		// 设置起始行
		$startRow = 1;
		$row = 65599;
		for($i=0; $i<$row;$i++){
			$phpExcelSheet->setCellValue('A' . $startRow, $i);
			$startRow++;
		}

		// 数据写入
		// $xlsWriter = new PHPExcel_Writer_Excel5($objPHPExcel); //该类写入数据不能超过65536行
		$xlsWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);

		/*if(isset($from) && $from == 'webdown'){
			header('Content-Type: application/octet-stream');
			header('Content-Disposition: attachment;filename="' . $fileName . '.xlsx"');
			header('Cache-Control: max-age=0');
			$xlsWriter->save('php://output');
		}*/

		// 设置保存路径

		if (!is_dir($this->logPath)) {
			@mkdir($this->logPath, 0700, true);
		}

		// 文件生成
		$fileName = $this->logPath . $fileName . $ext;
		$xlsWriter->save($fileName);
		return $fileName;

效果:

可以看到已经可以写入超过65536行的数据了