質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Q&A

解決済

2回答

4242閲覧

laravel-excelでエクスポートができない

kbayashi

総合スコア18

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

0グッド

0クリップ

投稿2020/02/09 03:36

編集2020/02/09 03:40

ボタンを押すと、order表にあるデータをexcelに出力する処理を実装しようとしているのですが

"Unable to resolve NULL driver for [Maatwebsite\Excel\Transactions\TransactionManager].", exception: "InvalidArgumentException", file: とエラーが表示され出力されません。どなたか手を貸していただけないでしょうか?

ちなみにhttps://reffect.co.jp/laravel/laravel_excel_master#Exportを参考に作っています。
またlaravelのバージョンは6.5.1です。

OrderExport

1<?php 2 3namespace App\Exports; 4 5use App\Order; 6use Maatwebsite\Excel\Concerns\FromCollection; 7 8 9class OrdersExport implements FromCollection 10{ 11 /** 12 * @return \Illuminate\Support\Collection 13 */ 14 public function collection() 15 { 16 return Order::all(); 17 } 18} 19

OrderController

1<?php 2 3namespace App\Http\Controllers; 4use Illuminate\Support\Facades\DB; 5use Illuminate\Http\Request; 6//EXCEL 7use Maatwebsite\Excel\Facades\Excel; 8use App\Exports\OrdersExport; 9 10class OrderController extends Controller 11{ 12 .... 13 //excelにインポート 14 public function export(){ 15 16 return Excel::download(new OrdersExport, 'orders.xlsx'); 17 18 } 19 20}

ordermodel

1<?php 2 3namespace App; 4 5use Illuminate\Database\Eloquent\Model; 6 7class Order extends Model 8{ 9 10 public function orderstates(){ 11 return $this->belongsTo(Orderstates::class,'state_id'); 12 } 13 14 public function payment(){ 15 return $this->belongsTo(Payment::class,'payment_id'); 16 } 17 18 public function shipping(){ 19 return $this->belongsTo(Shipping::class,'shipping_id'); 20 } 21 22 public function orderdetail(){ 23 return $this->hasMany('App\Orderdetail'); 24 } 25} 26

component

1<template> 2 <div class="container"> 3 <title-component> 4 <span slot="title">Day Sales</span> 5 <span slot="subtitle">売上日計表</span> 6 </title-component> 7 8 <div class="row my-3"> 9 <div class="col-5"> 10 <button v-on:click="excelExport">Excelに出力</button> 11 </div> 12 </div> 13 </div> 14</template> 15 16<script> 17import moment from "moment"; 18export default { 19 }, 20 methods:{ 21 //excelに出力(現在は全データを出力している) 22 excelExport(){ 23 axios.get('/api/order/export').then(function(response){ 24 }).catch(function(error){ 25 // The request was made and the server responded with a status code 26 // that falls out of the range of 2xx 27 console.log(error.response.data); 28 console.log(error.response.status); // 例:400 29 console.log(error.response.statusText); // Bad Request 30 console.log(error.response.headers); 31 }); 32 } 33 } 34} 35</script>

api.php

1 Route::get('order/export', 'OrderController@export');

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

laravel-excelでなぜexcelに出力されないのかは解決できておりませんが、vueのvue-json-excelコンポーネント使用してexcelに出力出来るようにはなりました。ですので、一旦この問題は放置しようと思います。

投稿2020/02/11 02:05

kbayashi

総合スコア18

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

config/excel.phpexcel.transactions.handlernullを設定していませんか?

php

1return [ 2 ... 3 'transactions' => [ 4 ... 5 'handler' => null, 6 ], 7 ... 8]; 9

nullハンドラーは「nullという名前の」ハンドラーなので、これを使うときはnullではなく名前を文字列で'null'と設定します。

php

1'handler' => 'null',

投稿2020/02/10 00:13

crhg

総合スコア1177

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kbayashi

2020/02/10 03:26

回答有り難うございます。excel.phpを確認した所'handler'が'db'になっていましたので 'null'に設定しました。エラーはなくなりましたがexcelをダウンロードすることができません
crhg

2020/02/10 04:53

'db'ならそのエラーは出ない筈なので少しおかしいですね。(古い設定をキャッシュしていたとか?) 最初の質問にあるエラーが出なくなったのならさらに別の問題が潜んでいたということになり、今度は別のエラーが出るようになったとか、エラーは出ずにダウンロードできたように見えるけど中身がおかしいとかいろいろあると思います。それについての別の質問をたてたほうがいいでしょう。
kbayashi

2020/02/11 01:59

回答有り難うございます。色々し食べた結果excelに出力できるようになりました。ですが、laravel-excelを使用せずvueのコンポーネントを使用して出力しています。海外サイトで自分と同じような質問をしている人がいて、回答者が「laravel-excelを使用せずvueのvue-json-excelコンポーネントを使え」と回答していて、それを参考にしたら、出力ができました。なので一旦、laravel-excelで出力出来ないバグは一旦放置しようと思っております。親身に対応していただいたにもかかわず、出来なくて申し訳ありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問