PHPExcel通过$objWriter生成的文件->;保存(';php://output';)-它需要权限吗?

PHPExcel通过$objWriter生成的文件->;保存(';php://output';)-它需要权限吗?,php,codeigniter,phpexcel,Php,Codeigniter,Phpexcel,我在php CodeIgniter中有一个代码,它从数据库中提取数据,并通过PHPExcel生成xls文件。 问题是,每当我将代码上传到另一台服务器时,它都会生成一个0 KB的.xls文件,打开时的错误是: “Excel无法打开文件“”,因为文件格式或文件扩展名无效。请验证文件是否已损坏,以及文件扩展名是否与文件格式匹配”。 传入的数据来自同一个表,使用的所有库也相同 我的问题: 1.服务器是否应用了使phpexcel文件为0kb的r/w权限?我正在使用CodeIgniter。 2.有没有办法查

我在php CodeIgniter中有一个代码,它从数据库中提取数据,并通过PHPExcel生成xls文件。

问题是,每当我将代码上传到另一台服务器时,它都会生成一个0 KB的.xls文件,打开时的错误是:
“Excel无法打开文件“”,因为文件格式或文件扩展名无效。请验证文件是否已损坏,以及文件扩展名是否与文件格式匹配”。

传入的数据来自同一个表,使用的所有库也相同

我的问题:
1.服务器是否应用了使phpexcel文件为0kb的r/w权限?我正在使用CodeIgniter。
2.有没有办法查看PHPExcel对象中写入的内容?
3.有什么东西我遗漏了吗

生成xls文件的代码是:

先谢谢你


测试服务器中显示的我的输出是:



解决方案: 事实证明,server1的php版本是5.2.9
server2的php版本是5.1.6

在server2中生成错误: 致命错误:在第225行的/var/www/html/APP_NAME/application/libraries/PHPExcel/Writer/Excel2007.php中找不到类“ZipArchive”


ZipArchive模块需要php版本>5.2

更新之后,它就可以工作了

谢谢大家的建议。

它输出0kb或“Excel无法打开文件”\uuu因为脚本的执行遇到了异常错误。启用错误报告,将其放在脚本的顶部:

/** Error reporting */
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
是的,您可能需要检查PHPExcel.php的正确r/w权限和所有权,但输出文件不再需要

我已经测试了你的代码,效果很好

<?php

/** Error reporting */
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

/** Include PHPExcel */
require_once('PHPExcel.php');
$objPHPExcel = new PHPExcel();

// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);

// Set header and footer. When no different headers for odd/even are used, odd header is assumed.
$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader('&L&BInvoice&RPrinted on &D');
$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddFooter('&L&B' . $objPHPExcel->getProperties()->getTitle() . '&RPage &P of &N');

// Set page orientation and size
$objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE);
$objPHPExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4);

// $this->load->library('PHPExcel/PHPExcel_IOFactory');

$uri_year = "2015";
$uri_month = "now";
$file_name = $uri_year . "-" . $uri_month . "_staff_report.xlsx";

$objPHPExcel->setActiveSheetIndex(0)
        ->setCellValue('A1', "This is a test");

// Redirect output to a client web browser (Excel2007)
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename=' . $file_name);
header('Cache-Control: max-age=0');

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
//  ob_end_clean();
$objWriter->save('php://output');
它输出0kb或“Excel无法打开文件”\因为脚本的执行遇到异常错误。启用错误报告,将其放在脚本的顶部:

/** Error reporting */
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
是的,您可能需要检查PHPExcel.php的正确r/w权限和所有权,但输出文件不再需要

我已经测试了你的代码,效果很好

<?php

/** Error reporting */
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

/** Include PHPExcel */
require_once('PHPExcel.php');
$objPHPExcel = new PHPExcel();

// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);

// Set header and footer. When no different headers for odd/even are used, odd header is assumed.
$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddHeader('&L&BInvoice&RPrinted on &D');
$objPHPExcel->getActiveSheet()->getHeaderFooter()->setOddFooter('&L&B' . $objPHPExcel->getProperties()->getTitle() . '&RPage &P of &N');

// Set page orientation and size
$objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE);
$objPHPExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4);

// $this->load->library('PHPExcel/PHPExcel_IOFactory');

$uri_year = "2015";
$uri_month = "now";
$file_name = $uri_year . "-" . $uri_month . "_staff_report.xlsx";

$objPHPExcel->setActiveSheetIndex(0)
        ->setCellValue('A1', "This is a test");

// Redirect output to a client web browser (Excel2007)
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename=' . $file_name);
header('Cache-Control: max-age=0');

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
//  ob_end_clean();
$objWriter->save('php://output');

请检查测试的以下代码:

 public function demo()
    {

        error_reporting(E_ALL);
        ini_set('display_errors', TRUE);
        ini_set('display_startup_errors', TRUE);

        define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />');

        /** Include PHPExcel */
        $this->load->library('PHPExcel');

        $objPHPExcel = new PHPExcel();

        $objPHPExcel->getProperties()->setCreator("MokNathal")
                                     ->setLastModifiedBy("MokNathal")
                                     ->setTitle("STAFF REPORT")
                                     ->setSubject("STAFF REPORT")
                                     ->setDescription("STAFF REPORT")
                                     ->setKeywords("STAFF REPORT")
                                     ->setCategory("STAFF REPORT");



        $objPHPExcel->getActiveSheet()->mergeCells('A1:F1');
        $objPHPExcel->setActiveSheetIndex(0)
                    ->getCell('A1')->setValue("Name of staff:aaaaaa Lname");
        $objPHPExcel->getActiveSheet()->getStyle('A1:F1')->getAlignment()->setWrapText(true);       

        $objPHPExcel->getActiveSheet()->mergeCells('A2:F2');
        $objPHPExcel->setActiveSheetIndex(0)
                    ->getCell('A2')->setValue("Group:Sunday Holiday Plan");
        $objPHPExcel->getActiveSheet()->getStyle('A2:F2')->getAlignment()->setWrapText(true);       

        $objPHPExcel->getActiveSheet()->mergeCells('A3:F3');
        $objPHPExcel->setActiveSheetIndex(0)
                    ->getCell('A3')->setValue("Login Details");
        $objPHPExcel->getActiveSheet()->getStyle('A3:F3')->getAlignment()->setWrapText(true);           

        $objPHPExcel->getActiveSheet()->mergeCells('A4:F4');
        $objPHPExcel->setActiveSheetIndex(0)
                    ->getCell('A4')->setValue("Checkin time:09:05:00am");
        $objPHPExcel->getActiveSheet()->getStyle('A4:F4')->getAlignment()->setWrapText(true);           

        $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true);
        $objPHPExcel->getActiveSheet()->getStyle('A2')->getFont()->setBold(true);
        $objPHPExcel->getActiveSheet()->getStyle('A3')->getFont()->setBold(true);
        $objPHPExcel->getActiveSheet()->getStyle('A4')->getFont()->setBold(true);
        $objPHPExcel->getActiveSheet()->getStyle('A5')->getFont()->setBold(true);
        $objPHPExcel->setActiveSheetIndex(0)
                    ->setCellValue('A5', 'Year')
                     ->setCellValue('B5', 'Month')
                     ->setCellValue('C5', 'Day')
                     ->setCellValue('D5', 'Login Time')
                      ->setCellValue('E5', 'Logout Time')
                       ->setCellValue('F5', 'Login Status');

        $objPHPExcel->getActiveSheet()->getStyle('A5:F5')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

        $objPHPExcel->getActiveSheet()->getStyle('A5')->getFont()->setBold(true);
        $objPHPExcel->getActiveSheet()->getStyle('B5')->getFont()->setBold(true);
        $objPHPExcel->getActiveSheet()->getStyle('C5')->getFont()->setBold(true);
        $objPHPExcel->getActiveSheet()->getStyle('D5')->getFont()->setBold(true);
        $objPHPExcel->getActiveSheet()->getStyle('E5')->getFont()->setBold(true);
        $objPHPExcel->getActiveSheet()->getStyle('F5')->getFont()->setBold(true);

        $i=6;
        $uri_year=2071;
        $uri_month=4;
        for($j=1;$j<=30;$j++)
        {
        $objPHPExcel->setActiveSheetIndex(0)
                         ->setCellValue('A'.$i, $uri_year)
                         ->setCellValue('B'.$i, $uri_month)
                         ->setCellValue('C'.$i, $j);

                $i++;

        }
        foreach(range('A','F') as $columnID) {
            $objPHPExcel->getActiveSheet()->getColumnDimension($columnID)
                ->setAutoSize(true);
        }

        $objPHPExcel->getActiveSheet()->setTitle('Trasaction List');


        $objPHPExcel->setActiveSheetIndex(0);

        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');

        header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        header("Content-Disposition: attachment; filename=".$uri_year."-".$uri_month."_staff_report.xlsx\"");
        header("Cache-Control: max-age=0");

        $objWriter->save("php://output");

    }   
公共功能演示()
{
错误报告(E_全部);
ini设置(“显示错误”,真);
ini设置(“显示启动错误”,TRUE);
定义('EOL',(PHP_SAPI=='cli')?PHP_EOL:'
'); /**包括PHPExcel*/ $this->load->library('PHPExcel'); $objPHPExcel=new PHPExcel(); $objPHPExcel->getProperties()->setCreator(“Moknatall”) ->setLastModifiedBy(“莫克纳塔尔”) ->setTitle(“员工报告”) ->setSubject(“员工报告”) ->setDescription(“员工报告”) ->关键词(“员工报告”) ->setCategory(“员工报告”); $objPHPExcel->getActiveSheet()->合并单元格('A1:F1'); $objPHPExcel->setActiveSheetIndex(0) ->getCell('A1')->setValue(“员工姓名:AAAAA Lname”); $objPHPExcel->getActiveSheet()->getStyle('A1:F1')->getAlignment()->setWrapText(true); $objPHPExcel->getActiveSheet()->合并单元格('A2:F2'); $objPHPExcel->setActiveSheetIndex(0) ->getCell('A2')->setValue(“组:周日假期计划”); $objPHPExcel->getActiveSheet()->getStyle('A2:F2')->getAlignment()->setWrapText(true); $objPHPExcel->getActiveSheet()->合并单元格('A3:F3'); $objPHPExcel->setActiveSheetIndex(0) ->getCell('A3')->setValue(“登录详细信息”); $objPHPExcel->getActiveSheet()->getStyle('A3:F3')->getAlignment()->setWrapText(true); $objPHPExcel->getActiveSheet()->合并单元格('A4:F4'); $objPHPExcel->setActiveSheetIndex(0) ->getCell('A4')->设置值(“签入时间:09:05:00am”); $objPHPExcel->getActiveSheet()->getStyle('A4:F4')->getAlignment()->setWrapText(true); $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true); $objPHPExcel->getActiveSheet()->getStyle('A2')->getFont()->setBold(true); $objPHPExcel->getActiveSheet()->getStyle('A3')->getFont()->setBold(true); $objPHPExcel->getActiveSheet()->getStyle('A4')->getFont()->setBold(true); $objPHPExcel->getActiveSheet()->getStyle('A5')->getFont()->setBold(true); $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A5','Year') ->setCellValue('B5','Month') ->setCellValue('C5','Day') ->setCellValue('D5','Login Time') ->setCellValue('E5','Logout Time') ->setCellValue('F5','Login Status'); $objPHPExcel->getActiveSheet()->getStyle('A5:F5')->getAlignment()->setHorizontal(PHPExcel\u Style\u Alignment::HORIZONTAL\u CENTER); $objPHPExcel->getActiveSheet()->getStyle('A5')->getFont()->setBold(true); $objPHPExcel->getActiveSheet()->getStyle('B5')->getFont()->setBold(true); $objPHPExcel->getActiveSheet()->getStyle('C5')->getFont()->setBold(true); $objPHPExcel->getActiveSheet()->getStyle('D5')->getFont()->setBold(true); $objPHPExcel->getActiveSheet()->getStyle('E5')->getFont()->setBold(true); $objPHPExcel->getActiveSheet()->getStyle('F5')->getFont()->setBold(true); $i=6; $uri_year=2071; $uri_month=4; 对于($j=1;$jsetActiveSheetIndex(0) ->setCellValue('A'.$i,$uri\u年) ->setCellValue('B'$i,$uri\u月) ->setCellValue('C'$i,$j); $i++; } foreach(范围('A','F')为$columnID){ $OBJPHPEXE