]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Сохранение файла эксель sendStreamAsFile
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Wed, 4 Jun 2025 11:14:55 +0000 (14:14 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Wed, 4 Jun 2025 11:14:55 +0000 (14:14 +0300)
erp24/controllers/AutoPlannogrammaController.php

index d6dad295e2906fc4777c58e6839f46537869b2d8..de5b59e3ee81e3af035e2d8030b28105e9e0fdb4 100644 (file)
@@ -9,6 +9,7 @@ use yii\data\ArrayDataProvider;
 use yii\db\Expression;
 use yii\db\Query;
 use yii\helpers\ArrayHelper;
+use yii\web\Response;
 use yii_app\records\CityStore;
 use yii_app\records\MatrixBouquetForecast;
 use yii_app\records\PricesDynamic;
@@ -1437,6 +1438,13 @@ class AutoPlannogrammaController extends BaseController
         'group_name' => 'Оффлайн',
         ];*/
         $request = Yii::$app->request;
+        $this->layout = false;
+        Yii::$app->response->format = Response::FORMAT_RAW;
+
+
+        while (ob_get_level() > 0) {
+            ob_end_clean();
+        }
 
         $filters = [
             'category' => $request->get('category'),
@@ -1585,18 +1593,27 @@ class AutoPlannogrammaController extends BaseController
             $rowNum++;
         }
 
-        $filename = 'report_' . date('Ymd_His') . '.xlsx';
+        foreach (range('A', 'J') as $col) {
+            $sheet->getColumnDimension($col)->setAutoSize(true);
+        }
+
 
-        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
-        header('Content-Disposition: attachment;filename="' . $filename . '"');
-        header('Cache-Control: max-age=0');
 
-        header('Expires: 0');
-        header('Pragma: public');
+        $tempFile = tempnam(sys_get_temp_dir(), 'xlsx');
+        $writer   = new Xlsx($spreadsheet);
+        $writer->save($tempFile);
 
-        $writer = new Xlsx($spreadsheet);
-        $writer->save('php://output');
-        Yii::$app->end();
+        return Yii::$app
+            ->response
+            ->sendStreamAsFile(
+                fopen($tempFile, 'rb'),
+                'report_' . date('Ymd_His') . '.xlsx',
+                [
+                    'mimeType'             => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
+                    'inline'               => false,
+                    'deleteFileAfterSend'  => true,
+                ]
+            );
     }