我已經創建Test.xlsx文件在應用程序文件夾中,但我很想給用戶一個選項來下載它。
但我想生成一個臨時 excel文件被傳輸到客戶端,然後,該文件將被銷燬。 我也厭倦了傳輸運行時生成的Test.xlsx文件,但由於文件許可,我不能這樣做,那就是我的Test.xlsx文件僅適用於讀取模式。下載Excel-View選項
什麼是實現這一目標的最佳方法?以下是我迄今爲止編寫的幾行代碼。
// code for excel generation from sqlDataProvider.
$factory = new CWidgetFactory();
Yii::import('ext.eexcelview.EExcelView',true);
$widget = $factory->createWidget($this,'EExcelView', array(
'dataProvider'=>$dataprovider,
'grid_mode'=>'export',
'title'=>'Title',
'creator'=>'TNC',
'autoWidth'=>true,
'filename'=>'Test.xlsx',
'stream'=>false,
'disablePaging'=>false,
'exportType'=>'Excel2007',
'columns'=>array(
'First_Name',
'Middle_Name',
'Last_Name',
'showTableOnEmpty' => false,
));
$widget->init();
$widget->run();
而對於下載:
$filename = "Test.xlsx";
//@chmod($filename1,0777);
header("Cache-Control: public");
header("Content-Description: File Transfer");
header('Content-disposition: attachment; filename='.basename($filename));
header('Content-type: application/vnd.ms-excel', true);
header("Content-Transfer-Encoding: binary");
header('Content-Length: '. filesize($_SERVER['DOCUMENT_ROOT'].$filename));
readfile(Yii::app()->params['secureBaseUrl'].$filename);
正如我所說的,這個代碼段不能正常工作,由於文件新生成的文件的權限。
您可以使用[文件模式(HTTP: PHP中的/php.net/manual/en/function.chmod.php)。 – adamors
@Örs我正在使用它,因爲您在註釋行中看到,但沒有工作,權限被拒絕! – TNC