【问题标题】:Write data from array to sheet using phpspreadsheet library使用 phpspreadsheet 库将数据从数组写入工作表
【发布时间】:2018-07-18 19:23:07
【问题描述】:

如何使用phpspreadsheet 库从数组创建 excel 工作表列标题?

下面是我正在尝试的代码,但它不起作用:

    // $header is an array containing column headers
    $header = array("Customer Number", "Customer Name", "Address", "City", "State", "Zip");
    $spreadsheet = new Spreadsheet();
    $sheet = $spreadsheet->getActiveSheet();
    $sheet->fromArray($header, NULL, 'A1');     

    // redirect output to client browser
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment;filename="myfile.xlsx"');
    header('Cache-Control: max-age=0');

    $writer = new Xlsx($spreadsheet);
    $writer->save('php://output');

【问题讨论】:

  • 您的日志文件中是否有任何错误?
  • “不工作”是什么意思?您的代码创建了一个名为“myfile.xlsx”的附件,内容是您的标头数组。
  • 这始终是一个谷歌的想法,让社区知道你做了什么来解决问题。这可能对其他人有所帮助,这就是 stackoverflow 的目的。

标签: php excel phpspreadsheet


【解决方案1】:

一个更详细的例子

$database = [
    [ 'Tree',  'Height', 'Age', 'Yield', 'Profit' ],
    [ 'Apple',  18,       20,    14,      105.00  ],
    [ 'Pear',   12,       12,    10,       96.00  ],
    [ 'Cherry', 13,       14,     9,      105.00  ],
    [ 'Apple',  14,       15,    10,       75.00  ],
    [ 'Pear',    9,        8,     8,       76.80  ],
    [ 'Apple',   8,        9,     6,       45.00  ],
];

$criteria = [
    [ 'Tree',      'Height', 'Age', 'Yield', 'Profit', 'Height' ],
    [ '="=Apple"', '>10',    NULL,  NULL,    NULL,     '<16'    ],
    [ '="=Pear"',  NULL,     NULL,  NULL,    NULL,     NULL     ],
];

$worksheet->fromArray( $criteria, NULL, 'A1' )
    ->fromArray( $database, NULL, 'A4' );

$worksheet->setCellValue('A12', '=DCOUNT(A4:E10,"Height",A1:B3)');

$retVal = $worksheet->getCell('A12')->getCalculatedValue();

// $retVal = 3

还有更多很好的例子 https://phpspreadsheet.readthedocs.io/en/latest/topics/calculation-engine/#examples_1

【讨论】:

    【解决方案2】:

    另外,您的 Content-Type 标头有误...


    对于 BIFF .xls 文件

    application/vnd.ms-excel
    

    对于 Excel2007 及以上的 .xlsx 文件

    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
    

    所以,完整的工作代码应该是这样的:

        // $header is an array containing column headers
        $header = [array("Customer Number", "Customer Name", "Address", "City", "State", "Zip")];
    
        $spreadsheet = new Spreadsheet();
        $sheet = $spreadsheet->getActiveSheet();
        $sheet->fromArray($header, NULL, 'A1');     
    
        // redirect output to client browser
        header('Content-Disposition: attachment;filename="myfile.xlsx"');
        header('Cache-Control: max-age=0');
    
        $writer = new Xlsx($spreadsheet);
        $writer->save('php://output');
    

    【讨论】:

      【解决方案3】:

      你需要写

      $sheet->fromArray([$header], NULL, 'A1');
      

      【讨论】:

        【解决方案4】:

        你需要包含命名空间

                $spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
                $writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
        

        【讨论】:

        • 如果您“使用”类上方的命名空间,则不需要包含命名空间。
        猜你喜欢
        • 1970-01-01
        • 2019-08-10
        • 1970-01-01
        • 2017-08-22
        • 1970-01-01
        • 1970-01-01
        • 2021-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多