例如我有5000个数据。 我正在尝试为excel中的每个文件拆分这些数据1000。
看到这个例子:
创建两个工作簿
($objPHPExcelFile1=new PHPExcel(); $objPHPExcelFile2=new PHPExcel();
所以我做了这个
$jco=1; $jcos=1;
$trig=0; $rowNya = 2;
$no = 0;
if ($VinDB->num_rows($result) != 0)
{
while($line = $VinDB->fetch_array($result)){
if($trig ==0 )
{
$objPHPExcel[$jcos] = new PHPExcel();
$objPHPExcel[$jcos]->getProperties()->setCreator("Test")
->setLastModifiedBy("Test")
->setTitle("Office 2007 XLSX Test Document")
->setSubject("Office 2007 XLSX Test Document")
->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
->setKeywords("office 2007 openxml php")
->setCategory("result file");
$trig=1;
}
$no = $no +1;
if($jco <= 1000){
$objPHPExcel[$jcos]->setActiveSheetIndex(0)
->setCellValue("A$rowNya", $no)
->setCellValue("B$rowNya", @$line["NoTransaksi"])
->setCellValue("C$rowNya", @$line["Pesan"])
->setCellValue("D$rowNya", @$line["Jam"])
->setCellValue("E$rowNya", @$line["Alias"])
->setCellValue("F$rowNya", @$line["Nomor_hp"])
->setCellValue("G$rowNya", @$line["GroupKU"])
->setCellValue("H$rowNya", @$line["Report"])
->setCellValue("I$rowNya", @$line["Status"])
->setCellValue("J$rowNya", @$line["Token"]);
$rowNya = $rowNya + 1;
$jco++;
}
else{
$jco=1;
$trig=0;
$objPHPExcel[$jcos]->getActiveSheet()->setTitle('Simple');
$objPHPExcel[$jcos]->setActiveSheetIndex(0);
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="Report_part'.$jcos.'.xls"');
header('Cache-Control: max-age=0');
$objWriter[$jcos] = PHPExcel_IOFactory::createWriter($objPHPExcel[$jcos], 'Excel5');
$objWriter[$jcos]->save('php://output');
$jcos++;
}
}
}
对于前1000个数据,它有一个保存按钮,但对于第2部分,它不起作用。谁能帮我。这是截图:
最新: 好吧..我不能上传多个文件到浏览器,所以我只做多张表并将其保存在我的本地磁盘上,但我如何从我的localhost / server下载它
这是我的代码
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('/xampp/htdocs/sms/Report_'.$jcos.'.xls');
$file = 'sms/Report_'.$jcos.'.xls';
header('Content-type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="'.$file.'"');
header('Content-Length: '.filesize($file));
readfile($file);
答案 0 :(得分:2)
您无法向浏览器发送多个文件。将工作簿保存到磁盘,将它们打包到一个文件(例如zip)中,然后将此单个文件发送到浏览器。
修改强>
在你的while循环之后你可以添加:
$zip = new ZipArchive();
$zip->open('/xampp/htdocs/sms/Reports.zip', ZipArchive::OVERWRITE);
$zip->addGlob('/xampp/htdocs/sms/Report_*.xls');
$zip->close();
请查看docs了解更多选项。
最后:
$file = '/xampp/htdocs/sms/Reports.zip';
header('Content-type: application/zip'); // Please check this, i just guessed
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Content-Length: '.filesize($file));
readfile($file);