web-dev-qa-db-ja.com

Laravel

私はExcelファイルの読み取りと作成に Maatwebsite のライブラリを使用しています。作成は簡単で、なんとなく直感的でしたが、読むということになると、私には理解できません。

これは私のExcelファイルがどのように見えるかです: enter image description here

行をループする方法を理解しましたが、私の例の$ rowは実際には文字列のタイプであるため、$ row->何かを実行できません。

私のコントローラーでは、次のように読みたいと思います。

 Excel::load('storage\\exports\\'. $fName, function($reader) {
    $reader->each(function($sheet) {
        Log::warning("sheet happens");

        // Loop through rows            
        $sheet->each(function($row) {
            Log::warning($row);
        });

    });
});

これは私に出力を与えます

[2016-01-28 06:42:05] local.WARNING: sheet happens  
[2016-01-28 06:42:05] local.WARNING:   
[2016-01-28 06:42:05] local.WARNING:   
[2016-01-28 06:42:05] local.WARNING:   
[2016-01-28 06:42:05] local.WARNING:   
[2016-01-28 06:42:05] local.WARNING:   
[2016-01-28 06:42:05] local.WARNING:   
[2016-01-28 06:42:05] local.WARNING: sheet happens  
[2016-01-28 06:42:05] local.WARNING: ocjena  
[2016-01-28 06:42:05] local.WARNING: Kolokvijum 1 (%)  
[2016-01-28 06:42:05] local.WARNING: Kolokvijum 2  
[2016-01-28 06:42:05] local.WARNING: Kolokvijum 2 (%)  
[2016-01-28 06:42:05] local.WARNING: Završni ispit (%)  
[2016-01-28 06:42:05] local.WARNING: Završni ispit  

出力が正しい順序になっていないことに混乱しました。

私の行が文字列のタイプであることに混乱しました。どうして?

マトリックスのように特定のセルにアクセスすることは可能ですか:$ table [$ row] [$ column]; ?

私の質問に答えられない場合は、オンラインのドキュメントがあまりないので、動作するコードがあれば本当に感謝します。

編集:ヘッダーに複数の単語があることがわかったので、どういうわけかすべてが混同されます。

編集:オンラインにはドキュメントがあまりないので、何が解決したかを共有する必要があると思います。

ソリューションコード:

$rows = Excel::load('storage\\exports\\'. $fName)->get();
Log::warning($rows);

プリントアウト:

[{"ime_studenta":"andrej","broj_indeksa":4,"kolokvijum_1":4,"kolokvijum_2":4,"zavrsni_ispit":44,"ukupno":4,"ocjena":4},{"ime_studenta":"as","broj_indeksa":342,"kolokvijum_1":123,"kolokvijum_2":57,"zavrsni_ispit":56,"ukupno":5656,"ocjena":56}] 
6
Andrej

多分これはあなたにとって便利です

$rows = Excel::load('storage\\exports\\'. $fName)->get();
8
thgs
//Using PHPExcel IOFactory

public function index() 
{
        $inputFileName = 'example.xlsx';

        $spreadsheet = IOFactory::load($inputFileName);
        $sheetData = $spreadsheet->getActiveSheet()->toArray(null, true, true, true);

        //dd($sheetData);

        foreach ($sheetData as $rows=>$k) {
                $num = $rows;
            foreach ($k as $key=>$value) {
                $Excel = new Excel;
                $Excel->cell_number = $num;
                $Excel->cell_letter = $key;
                $Excel->cell_value = $value;   
                $Excel->save(); 
            }
        }

        return view('Excel', compact('sheetData'));
}
1