代码之家  ›  专栏  ›  技术社区  ›  kunal

如何在使用MattWebsite Excel导出时删除数组键?

  •  2
  • kunal  · 技术社区  · 6 年前

    我正在使用Maatwebsite Excel将数据导出到Excel。我用的是拉维框架。我的阵列是这样的:

    Array
    (
    [0] => Array
        (
            [0] => Name
            [1] => Salary
            [2] => Age
            [3] => Gender
        )
    
    [1] => Array
        (
            [0] => Kunal
            [1] => 12000
            [2] => 15
            [3] => M
        )
    
    [2] => Array
        (
            [0] => Kunal
            [1] => 16000
            [2] => 17
            [3] => m
        )
    )
    that is saved in this variable $detailArray
    

    我的导出函数如下所示:

    Excel::create("Test", function($excel) use($detailArray) {
            $excel->sheet('Sheet', function($sheet) use($detailArray) {
                $sheet->fromArray($detailArray, null, 'A1', true);
            });
        })->export('xls');
    

    现在,当我导出excel时,它看起来是这样的: enter image description here

    现在我要删除0,1,2,3这些键,如图所示。 请帮助我解决这个问题。提前谢谢。

    3 回复  |  直到 6 年前
        1
  •  2
  •   kunal    6 年前

    我终于做到了。希望将来它能帮助别人。需要在fromArray函数中传递false。

    $sheet->fromArray($data); to $sheet->fromArray($detailArray, null, 'A1', false, false);
    
        2
  •  0
  •   Oluwatobi Samuel Omisakin    6 年前

    打开配置文件 excel export 数组,更改 generate_heading_by_indices false . 这将删除使用的标题索引,因为这意味着使用属性名或数组的索引作为标题。

    enter image description here

    注:这是给 "maatwebsite/excel": "~2.1.0"

    因为你想删除 array keys for tis function not for all exporting functions 那你就可以了

    config(['excel.export.generate_heading_by_indices' => false]);
    //my other export functions below
    

    注:我没有测试过这个。

        3
  •  0
  •   Niket Joshi    6 年前

    可能是您需要对查询输出执行类似的操作,以便在导出时不能获取任何类型的键

    $tableData = TableListMember::select(DB::RAW('IF(tbl_tablelist_members.member_type = "m","Team Member","Candidate") as UserType,tbl_tablelist.tablelist_name as TableName, tbl_event.event_code as Weekend, IF(tbl_tablelist_members.member_type = "m", users.first_name, tbl_candidates.first_name) as FirstName, IF(tbl_tablelist_members.member_type = "m", users.last_name, tbl_candidates.last_name) as LastName, tbl_user_roll.st_roll_name as Role, IF(tbl_tablelist_members.member_type = "m", users.address, tbl_candidates.address) as Address, IF(tbl_tablelist_members.member_type = "m", tbl_state_county.county, tbl_state_county.county) as County, IF(tbl_tablelist_members.member_type = "m", users.phone_no, tbl_candidates.phone_no) as Phone, IF(tbl_tablelist_members.member_type = "m", users.email, tbl_candidates.email) as Email, IF(tbl_tablelist_members.member_type = "m", users.church, tbl_candidates.church) as Church, IF(tbl_tablelist_members.member_type = "m", users.music, "") as Music, IF(tbl_tablelist_members.member_type = "m", IF(users.reunion_group = 0 ,"No","Yes"), "") as Reunion_Group'))
            ->leftjoin('tbl_tablelist','tbl_tablelist.tablelist_id','tbl_tablelist_members.tablelist_id')
            ->leftjoin('tbl_event','tbl_event.id','tbl_tablelist.event_id')
            ->leftjoin('tbl_user_roll','tbl_user_roll.id','tbl_tablelist_members.role')
            ->leftjoin('users','users.id','tbl_tablelist_members.member_candidate_id')
            ->leftjoin('tbl_candidates','tbl_candidates.id','tbl_tablelist_members.member_candidate_id')
            ->leftjoin('tbl_state_county','tbl_state_county.id','tbl_candidates.county_id')
    
            ->where(DB::RAW('event_id'), $request->id)->orderBy('tbl_tablelist.tablelist_id','ASC')->orderBy('tbl_tablelist_members.displayorder')->get()->toArray();
            // dd($tableData[0]);
            return Excel::create('TableList ',function($excel) use ($tableData) {
                $excel->sheet('mySheet', function($sheet) use ($tableData) {
                $sheet->fromArray($tableData);
                });
            })->download('csv');  
    

    希望此查询和源代码能帮助您解决问题 你也可以按照你的要求编写查询,我是为了解决问题而写的,是的,这是有效的代码,所以你可以随意实现这段代码。