在Laravel中读取Excel文件

7
我正在使用Maatwebsite的库来读取和创建Excel文件。创建操作很容易且直观,但是当涉及到读取时,我就无法弄清楚该怎么做。
这是我的Excel文件的样子: enter image description here 我已经找到了如何循环遍历行,但是让我困惑的是,在我的示例中,$row实际上是字符串类型,因此我无法执行$row->something;
在我的控制器中,我想以以下方式进行读取:
 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}] 

1
我无法让Laravel Facade在那个方面工作。最终我直接使用了PHPExcel。它非常容易使用,并且具有额外的功能,这些功能在Maatwebsite中无法正常工作。 - Jeff
2个回答

8
也许这对您有用。
$rows = Excel::load('storage\\exports\\'. $fName)->get();

1
//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'));
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接