1

我的 Excel 导出工作 90%。第一批专栏是直截了当的,取自我的收藏。最后两个字段来自相关模型,我对测试名称和测试分数感兴趣。对于每一行(运动员),有多个测试。我需要运动员所做的每一项测试都成为一个专栏。

我得到了它的工作,但测试分数没有正确对齐。如果运动员 1 进行了测试 A、B 和 C,但运动员 2 只进行了测试 B 和 C,则将运动员 2 的 B 分数放在 A 测试列下。见附图。147.000 的黄色高光应该全部向右移动,最后两行也必须向右移动,3.6 和 3.8 是 20 米冲刺测试的分数。请帮助进行分数对齐。

在此处输入图像描述

控制器:

    if(count($tests)){
        $insert_results = array();
        foreach($tests as $key => $t) {            
            $insert_results[$key]['institution'] = $t->section->institution->name;
            $insert_results[$key]['sport'] = $t->section->sport->name;
            $insert_results[$key]['sportlevel'] = $t->section->sportlevel->long_name;
            $insert_results[$key]['testdate'] = $t->test_date->format('Y-m-d');
            $insert_results[$key]['name'] = $t->athlete->name;
            $insert_results[$key]['surname'] = $t->athlete->surname;
            $insert_results[$key]['ethnicity'] = $t->athlete->race;
            $insert_results[$key]['gender'] = $t->athlete->gender;
            $insert_results[$key]['age'] = $t->age;
            $insert_results[$key]['weight'] = $t->weight;
            $insert_results[$key]['height'] = $t->height;
            foreach($t->results as $r){
                $insert_results[$key]['test'.$r->battery->name] = $r->score;
            }
        }
        $filename = $section_obj->institution->name . '_' . $section_obj->sport->name . '_' . $section_obj->sportlevel->name . '_' . $date;
        $sheetname = $section_obj->sport->name . '_' . $section_obj->sportlevel->name;

        Excel::create($filename, function($excel) use($insert_results, $sheetname) {

            $excel->sheet($sheetname, function($sheet) use($insert_results) {
                $sheet->fromArray($insert_results);
                                // Auto filter for entire sheet
                $sheet->setAutoFilter();
                // Freeze first row
                $sheet->freezeFirstRow();

            });

        })->export('xlsx');
    }else{
        return redirect()->back()->with(['fail' => 'No results found for test day '. $date]);
    }
4

0 回答 0