如何在 PHP 中导出 excel 并兼容所有设备

How to export excel in PHP and compatible for all devices

我正在尝试导出 PHP 中的导出文件。我正在使用 Codeigniter 框架。

我是这样导出Excel的:

header("Content-Type: application/xls");    
header("Content-Disposition: attachment; filename={$filename}.xls"); 

它以正确的格式显示 Windows 中的数据。但是在我第一次打开它时提示一条消息。但是当我在 MAC OS 中打开它时,它不起作用。

如何以在 Google 驱动器中也适用的正确格式导出 Excel?我已经尝试了上面和下面的很多方法。在 Mac 和 Google 云端硬盘电子表格中均无法正常工作:

header('Content-Disposition: attachment; filename='.$filename.'.xlsx');
header('Content-type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); 

header('Content-Disposition: attachment; filename='.$filename.'.xls');
header('Content-type: application/vnd.ms-excel'); 

header("Content-Type: application/xls");    
header("Content-Disposition: attachment; filename=$filename.xls");  

header("Content-Type: application/xls");

header("Content-Disposition: attachement; filename=export_test.xls");

试试这个

    ini_set('memory_limit', '-1');
    //ini_set('MAX_EXECUTION_TIME', '-1');
    ini_set('max_execution_time', 300);
    header("Content-Type: application/vnd.ms-excel");
    header("Content-Disposition: attachment; filename=Registration.xlsx");
    header("Pragma: no-cache");
    header("Expires: 0");

即使您使用的是 codeigniter,我还是建议您加载一个外部库来处理您的 excel 内容。

每个人都在 PHP 中使用名为 phpspreadsheet 的库。

https://phpspreadsheet.readthedocs.io/en/latest/

这将解决您遇到的所有问题以及更多问题。它非常容易安装,因为它可以作为 composer 包使用。

https://packagist.org/packages/phpoffice/phpspreadsheet

创建 excel 文件非常简单:

<?php

require 'vendor/autoload.php';

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

$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'Hello World !');

$writer = new Xlsx($spreadsheet);
$writer->save('hello world.xlsx');

并且由于您使用的是 codeigniter,因此您可以将其与 CI 下载助手结合使用以强制下载文档。