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

时间:2015-08-19 09:47:04

标签: php codeigniter export-to-excel

我正在尝试在PHP中导出导出文件。我正在使用Codeigniter Framework。

我以这种方式导出Excel:

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

它以正确的格式显示Windows中的数据。但是在我最初打开它时会提示一条消息。但是当我在MAC OS中打开它时,它无法正常工作。

如何以适用于Google云端硬盘的正确格式导出Excel?我已经尝试了如上所述的许多方法,如下所示。所有这些都无法在Mac和Google Drive电子表格中正常运行:

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");  

3 个答案:

答案 0 :(得分:1)

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

每个人都在PHP中使用一个叫做phpspreadsheet的库。

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

这将解决您遇到的所有问题,甚至更多。由于它可以作为作曲家软件包安装,因此安装起来非常容易。

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下载助手结合使用以强制下载文档。

答案 1 :(得分:0)

尝试一下

    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");

答案 2 :(得分:-2)

标题(“Content-Type:application / xls”);

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