2

Laravel Excel を使用してデータをエクスポートしようとしています。Laravel Excel を統合しましたが、自動ダウンロードではなく、ボタン クリックのみのダウンロードで問題が見つかりました。

私のビューは次のようになります。

<a href="{{Export::exportXLSX('users', $users)}}" class="btn btn-default btn-sm">
                                    <i class="fa fa-file-excel-o"></i> Export Users </a> 

// here $users is the array return from tbl_users through UsersController

ファイルをダウンロードするためのヘルパー メソッドがあり、ヘルパーは次のようになります。

class Export
{
    public static function exportXLSX($filename, $data){
        $filename = $filename.'-'.Carbon::now();
        Excel::create($filename, function($excel) use($data) {
            $excel->sheet('Sheetname', function($sheet) use($data) {
                $sheet->fromArray($data);
            });
        })->export('xlsx');
    }
}

ファイルをローカルストレージに保存したくありません。自動ダウンロードではなく、リンクをクリックしたときにのみファイルをダウンロードしたいだけです。データベース内のテーブル名に従ってデータが変化し続ける場合があります。

これを達成する方法はありますか?

ありがとうございました!

4

1 に答える 1

1

Laravel Excel のドキュメントによると:

作成したファイルをダウンロードするには、->export($ext) または ->download($ext) を使用します。

ダウンロード プロセスを開始する場合を除き、メソッド->exportもメソッドも使用する必要はありません。->download

まず、サーバーに保存する必要があります。

作成したファイルをサーバーに保存するには、->store($ext, $path = false, $returnInfo = false) または ->save() を使用します。

ストレージ情報を返したい場合は、3 番目のパラメーターを true に設定するか、export.php 内の構成設定を変更します。

次に例を示します。

class Export
{
    public static function exportXLSX($filename, $data){
        $filename = $filename.'-'.Carbon::now();
        $storage_info = Excel::create($filename, function($excel) use($data) {
            $excel->sheet('Sheetname', function($sheet) use($data) {
                $sheet->fromArray($data);
            });
        })->store('xls', false, true);

        // Work with $storage_info->full parameter
        // ...
    }
}

カスタム ストレージ パスを使用する場合 (たとえば、クライアントごとにファイルを分ける場合)、フォルダーを 2 番目のパラメーターとして設定できます。

->store('xls', storage_path('excel/exports'));
于 2016-02-12T12:08:47.110 に答える