簡體   English   中英

PhpSpreadsheet 損壞的 xlsx 文件

[英]PhpSpreadsheet corrupted xlsx file

我在嘗試下載 xlsx 文件時遇到問題。 當我在本地測試它時它工作得很好,但是當我將它上傳到生產服務器時,文件被損壞了。

這是文件輸出: 在此處輸入圖片說明

這是我使用的代碼:

<?php

    require 'conn.php';
    require 'vendor/autoload.php';

    use PhpOffice\PhpSpreadsheet\Spreadsheet;
    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
    use PhpOffice\PhpSpreadsheet\IOFactory;


    $spreadsheet = new Spreadsheet();
    $sheet = $spreadsheet->getActiveSheet();
    $sheet->setCellValue('A1', '#');
    $sheet->setCellValue('B1', 'First');
    $sheet->setCellValue('C1', 'Last');
    $sheet->setCellValue('D1', 'Handle');

    header('Content-Type: application/vnd.openxmlformats- 
    officedocument.spreadsheetml.sheet');
    header('Content-Disposition: attachment;filename="text.xlsx"');
    header('Cache-Control: max-age=0');
    $writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
    $writer->save('php://output');
    die;

我嘗試將標題更改為,但沒有幫助:

header('內容類型:應用程序/vnd.ms-excel');

我認為如果在調用 createWriter 靜態方法之前添加對輸出緩沖區的清理就可以了。

ob_end_clean();
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->save('php://output');

我有同樣的症狀,這是因為網絡服務器在做完之后繼續輸出東西

$writer->save('php://output');

在我的情況下,在它之后做一個die()是可行的,問題就消失了。 也許它可以為某人節省一點時間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM