【问题标题】:Formatting Excel Laravel with array data使用数组数据格式化 Excel Laravel
【发布时间】:2023-03-11 15:45:01
【问题描述】:

我正在尝试从 laravel 控制器中编写一个 excel,其中我将所有数据放在一个数组中,并且我设法编写了它,但我现在必须对其进行格式化,这是我拥有的数组:

[2020-12-30 13:22:05] local.DEBUG: array (
  0 => 
  array (
    0 => '1',
    1 => '2',
  ),
  1 => 
  array (
    0 => 'Test Name 1',
    1 => 'Test Name 2',
  ),
  2 => 
  array (
    0 => 'user',
    1 => 'user2',
  ),
  3 => 
  array (
    0 => '1',
    1 => '2',
  ),
) 

这是我创建 Excel 的方式:

Excel::create('Filename', function($excel) use ($budgets) {

            $excel->sheet('Sheetname', function($sheet) use ($budgets) { //$budgets is the array i'm printing on Log

                $sheet->fromArray($budgets);

            });

        })->export('xls');

这就是我的 excel 打印它的方式:

1 2
Test Name 1 Test Name 2
user1 user2
1 2

我想打印的方式是:

Code Name User Number
1 Test Name 1 user1 1
2 Test Name 2 user2 2

但我不知道如何实现这一点。谁能帮我解决这个问题?

//编辑//

I added some code to re estructure the array, now i have this:

$users = ['Code', 'Name', 'User', 'Number'];
        for ($i=0; $i<count($code); $i++){
            array_push($users, array($code[$i], $name[$i], $user[$i], $number[$i]));
        }
        
        Log::debug($users);

这是日志:

[2020-12-30 15:17:40] local.DEBUG: array (
  0 => 'Code',
  1 => 'Name',
  2 => 'User',
  3 => 'Number',
  4 => 
  array (
    0 => '1',
    1 => 'Test Name 1',
    2 => 'user1',
    3 => '1',
  ),
  5 => 
  array (
    0 => '2',
    1 => 'Test Name 2',
    2 => 'user2',
    3 => '2',
  ),
) 

但是我收到了这个错误:

[message] => Row `Code` must be array.
            [class] => PHPExcel_Exception

【问题讨论】:

    标签: php arrays laravel laravel-excel


    【解决方案1】:

    您可以重新构建您的阵列。 要获得您想要的打印,数组应如下所示:

    $budget = [
        ['Code', 'Name', 'User', 'Number'],
        [1, 'Test Name 1', 'user1', 1],
        ...
    ];
    

    【讨论】:

    • 我现在正在尝试这样做:$budgets = array('Code', 'Name', 'User', 'Number'); for ($i=0; $iCode 必须是数组。”
    • 你是一个数组的变量 $code 实例吗?你也将“header”数组命名为 $budgets,但在 for 循环中你将推入 $users。
    • 对不起,是的,我在数组名称上犯了一个错误,它与我用“标题”声明的用户数组相同。我将编辑帖子,以便您更清楚地看到它
    【解决方案2】:

    好的,所以,我设法重新构造数组并按照我想要的方式获取 Excel:

    public function generateExcel(Request $request)
        {
            $code = $request->input('code');
            $name = $request->input('name');
            $user = $request->input('user');
            $number = $request->input('number');
    
            $users = array();
            array_push($users, array('Code', 'Name', 'User', 'Number'));
            for ($i=0; $i<count($code); $i++){
                array_push($users, array($code[$i], $name[$i], $user[$i], $number[$i]));
            }
            
            
            Excel::create('Filename', function($excel) use ($users) {
    
                $excel->sheet('Sheetname', function($sheet) use ($users) {
    
                    $sheet->fromArray($users);
    
                });
    
            })->export('xls');
            return true;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-08
      • 2012-11-08
      • 2017-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多