起因自然是导出数据到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行的数据了