gpt4 book ai didi

php - 保存时出现PHPExcel错误

转载 作者:行者123 更新时间:2023-12-02 07:22:28 24 4
gpt4 key购买 nike

我正在使用PHPExcel导出报告。

当我在互联网上运行(使用PHP 5.6)时,它给了我一个错误。

但是,当我在本地主机上进行测试时,就可以了。完美运行(使用PHP 5.4.31)

这是我的代码

function downloadExcelBrand($brand,$tglAwal,$tglAkhir)
{

$this->load->library('php_excel');

$objPHPExcel = new PHPExcel();
// print_r($objPHPExcel);die();
$objPHPExcel->setActiveSheetIndex(0);

$objPHPExcel->getActiveSheet()->SetCellValue('A1', "Concept");
$objPHPExcel->getActiveSheet()->SetCellValue('B1', $brand);

$objPHPExcel->getActiveSheet()->SetCellValue('A2', "Period");
$objPHPExcel->getActiveSheet()->SetCellValue('B2', $tglAwal." to ".$tglAkhir);

$objPHPExcel->getActiveSheet()->SetCellValue('A5', "Boutique");
$objPHPExcel->getActiveSheet()->SetCellValue('B5', "Q1");
$objPHPExcel->getActiveSheet()->SetCellValue('C5', "Q2");
$objPHPExcel->getActiveSheet()->SetCellValue('D5', "Q3");
$objPHPExcel->getActiveSheet()->SetCellValue('E5', "Q4");
$objPHPExcel->getActiveSheet()->SetCellValue('F5', "BBC Score");

$data = $this->surveymodel->getDataLaporanBrand($brand,$tglAwal,$tglAkhir);
// print_r($data);die();
$i = 5;
foreach ($data as $index=>$value) {
// print_r($data[$index+1]);die();
if( $index%4 == 0){
$i++;
// print_r($value["Score"]);print_r($value['TotalData']);die();
$AvgQ1 = $value["Score"] / $value['TotalData'];
// print_r($AvgQ1);die();
$AvgQ2 = $data[$index+1]["Score"]/$data[$index+1]['TotalData'];
$AVGQ3 = $data[$index+2]["Score"]/$data[$index+2]['TotalData'];
$AvgQ4 = $data[$index+3]["Score"]/$data[$index+3]['TotalData'];
$BSC = $AvgQ1+$AvgQ2+$AVGQ3+$AvgQ4;

$objPHPExcel->getActiveSheet()->SetCellValue('A'.$i, $value["boutiqueID"]);
$objPHPExcel->getActiveSheet()->SetCellValue('B'.$i, $AvgQ1);
$objPHPExcel->getActiveSheet()->SetCellValue('C'.$i, $AvgQ2);
$objPHPExcel->getActiveSheet()->SetCellValue('D'.$i, $AVGQ3);
$objPHPExcel->getActiveSheet()->SetCellValue('E'.$i, $AvgQ4);
$objPHPExcel->getActiveSheet()->SetCellValue('F'.$i, $BSC);
}
}

// Instantiate a Writer to create an OfficeOpenXML Excel .xlsx file
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
// Write the Excel file to filename some_excel_file.xlsx in the current directory
header('Content-type: application/vnd.ms-excel');
// It will be called file.xls
header('Content-Disposition: attachment; filename="Report_By_Brand.xlsx"');
// Write file to the browser
$objWriter->save('php://output');
}

当我删除 $objWriter->save('php://output');代码时,会发生奇怪的事情。它要求保存excel,但是excel文件无法打开,因为它已损坏。

*编辑
  • 错误是

    无法访问该网站
    http://my-link-in-here上的网页可能暂时不可用,或者已永久移动到新的网址。
    ERR_INVALID_RESPONSE

  • *更新
  • 我尝试在ob_end_clean();之前添加ob_clean();$objWriter->save('php://output');并保存Excel,但由于Excel显示“文件格式或文件扩展名无效”,因此无法打开它。
  • 我尝试在xlsx属性上将xls扩展名更改为filename,现在可以打开Excel。但它显示php错误Message: ob_end_clean(): failed to delete buffer. No buffer to delete
  • 我尝试保留扩展名,但删除了ob_end_clean();,错误再次出现。.

  • *解决方案:
  • 我将代码更改为Excel5这样
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment;filename="userList.xls"');

    它像冠军一样运作。有人可以解释吗?我将给出解决方案的人可以解释
  • 最佳答案

    我找到了一个解决方法,在Classes/PHPExcel/Writer/Excel2007.php中注释了以下几行,php 7具有一个奇怪的返回日期类型,因此这样做将使php excel在php 7 pronto中工作。任何方式

    $saveDateReturnType = PHPExcel_Calculation_Functions::getReturnDateType();
    PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL);
    PHPExcel_Calculation_Functions::setReturnDateType($saveDateReturnType);


    //$saveDateReturnType = PHPExcel_Calculation_Functions::getReturnDateType();
    //PHPExcel_Calculation_Functions::setReturnDateType(PHPExcel_Calculation_Functions::RETURNDATE_EXCEL);
    //PHPExcel_Calculation_Functions::setReturnDateType($saveDateReturnType);

    为我工作。

    关于php - 保存时出现PHPExcel错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41994057/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com