[英]Selective download with PHPExcel
我正在使用PHPExcel下载存储在MySQLi中的一些数据。 我制定了一种适用于每个数据库的算法(理论上)。 我已经对其中的一些进行了测试,效果很好。
我提取了数组中的列名称: column_names
,然后将标题和数据添加到excel报告中。
// Adding titles
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1',$bigTitle);
$counter = 0;
$let = 'a';
while ($counter <= count($column_names)){
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue(strtoupper($let).'3', $column_names[$counter]);
$let++;
$counter++;
}
//Adding data
$i = 4;
while ($row = $result->fetch_array()) {
$counter = 0;
$let = 'a';
while ($counter <= count($column_names)){
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue(strtoupper($let).$i, $row[$column_names[$counter]]);
$let++;
$counter++;
}
$i++;
}
我正在使用连接到数据库
$conexion = new mysqli('localhost','user','pass','SAT_dbname',21);
我将“ SAT_db1”数据库克隆到“ SAT_db2”。 它们具有完全相同的结构,但信息不同。 如果我正在使用,下载工作正常
$conexion = new mysqli('localhost','user','pass','SAT_db1',21);
但是,如果我使用它是行不通的
$conexion = new mysqli('localhost','user','pass','SAT_db2',21);
我不知道如果不同名称的名称相同怎么办。 PHPExcel是否不能使用克隆的数据库? 还有什么呢?
该错误在浏览器中显示为“找不到文件”。
编辑我整天都在测试下载,最后我发现了一些东西:当寄存器很少时,我可以下载。 当我再拿几个的时候,我不能。
我正在将文件发送到浏览器:
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="Report.xlsx"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
仍然没有找到解决方案。
PHPExcel具有缓存限制。 我不得不手动更改这些限制。 在创建PHPExcel对象之前,我使用了以下代码:
set_time_limit(0) ;
$cacheMethod = PHPExcel_CachedObjectStorageFactory:: cache_to_phpTemp;
$cacheSettings = array( 'memoryCacheSize' => '500MB');
PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);
我假设如果您有更大的文件,则可以扩展“ memoryCacheSize”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.