【问题标题】:PHPExcel File format or extension is not valid 2PHPExcel 文件格式或扩展名无效 2
【发布时间】:2015-12-14 16:55:49
【问题描述】:

我正在使用 phpexcel 将我的查询导出到 excel 文件中;但是在我创建文件(它是 xslx 格式)之后,我无法在 excel 中打开我的文件。它给出“文件格式或扩展名无效。如果我尝试使用 OpenOffice Calc 打开它会正确打开。但 excelviewer 无法打开。

    <?php
require 'Classes/PHPExcel.php';
require 'Classes/PHPExcel/Writer/Excel2007.php';
require "database.php";
require "C_TahsilatGetir.php";

$obj = new TahsilatGetir;
$bitis = $obj->getExcelLastDate();
$baslangic = date("d/m/Y");
$tahsilatlar = $obj->tahsilatGetirTarih($bitis["son_tarihi"], $baslangic); 

// Create new PHPExcel object
echo date('H:i:s') . " Create new PHPExcel object\n";
$objPHPExcel = new PHPExcel();

// Set properties
echo date('H:i:s') . " Set properties\n";
$objPHPExcel->getProperties()->setCreator("Maarten Balliauw");
$objPHPExcel->getProperties()->setLastModifiedBy("Maarten Balliauw");
$objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document");
$objPHPExcel->getProperties()->setSubject("Office 2007 XLSX Test Document");
$objPHPExcel->getProperties()->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.");

// Add some data
echo date('H:i:s') . " Add some data\n";
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->SetCellValue('A1', 'SIRA');
$objPHPExcel->getActiveSheet()->SetCellValue('B1', 'MÜŞTERİ NO');
$objPHPExcel->getActiveSheet()->SetCellValue('C1', 'ÜNVAN');
$objPHPExcel->getActiveSheet()->SetCellValue('D1', 'BÖLGE');
$objPHPExcel->getActiveSheet()->SetCellValue('E1', 'GELEN TUTAR');
$objPHPExcel->getActiveSheet()->SetCellValue('F1', 'TARİH');
$objPHPExcel->getActiveSheet()->SetCellValue('G1', 'AÇIKLAMA');
$k = 2;
for ($i = 0; $i < count($tahsilatlar); $i++) {
    if ($tahsilatlar[$i]["tahsilat_turu"] == "Kredi Kartı") {
        $cell1 = "A".$k;
        $cell2 = "B".$k;
        $cell3 = "C".$k;
        $cell4 = "D".$k;
        $cell5 = "E".$k;
        $cell6 = "F".$k;
        $cell7 = "G".$k;
        $sira = $k - 1;
        $objPHPExcel->getActiveSheet()->SetCellValue($cell1, $sira);
        $objPHPExcel->getActiveSheet()->SetCellValue($cell2, $tahsilatlar[$i]["musteri_no"]);
        $objPHPExcel->getActiveSheet()->SetCellValue($cell3, $tahsilatlar[$i]["musteri_unvani"]);
        $objPHPExcel->getActiveSheet()->SetCellValue($cell4, $tahsilatlar[$i]["bolge"]);
        $objPHPExcel->getActiveSheet()->SetCellValue($cell5, $tahsilatlar[$i]["tutar"]);
        $objPHPExcel->getActiveSheet()->SetCellValue($cell6, $tahsilatlar[$i]["tahsilat_tarihi"]);
        $objPHPExcel->getActiveSheet()->SetCellValue($cell7, $tahsilatlar[$i]["banka"]);
        $k++;
    }
}

// Rename sheet
echo date('H:i:s') . " Rename sheet\n";
$objPHPExcel->getActiveSheet()->setTitle('Simple');


// Save Excel 2007 file
echo date('H:i:s') . " Write to Excel2007 format\n";
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="KREDIKARTI.xlsx"');
$objWriter->save('php://output');

// Echo done
echo date('H:i:s') . " Done writing file.\r\n";
?>

【问题讨论】:

  • 您是否可能使用 2007 年之前的 Excel 版本?之前的任何东西都只支持 xls ......我的猜测是你的 Excel 而不是文件的问题..
  • 有一个可用于 Excel95+ 的工具包,允许它读取 xlsx 文件,尽管 Excel95 对大小有限制
  • xls 和 xlsx 有什么区别?
  • xls 是一个 BIFF 格式的文件,包装在一个 OLE2 对象中; xlsx (OfficeOpenXML) 是压缩存档中的一系列 XML 文件

标签: php excel phpexcel


【解决方案1】:

始终确保 PHPExcel 保存流是在您将输出直接发送到浏览器时生成的输出 (php://output)。这意味着任何 echo 或 print 语句,如

echo date('H:i:s') . " Create new PHPExcel object\n";

echo date('H:i:s') . " Done writing file.\r\n";

不得在您的脚本中使用

【讨论】:

  • 我完全错过了
猜你喜欢
  • 2013-06-03
  • 2012-12-24
  • 1970-01-01
  • 2015-02-21
  • 1970-01-01
  • 1970-01-01
  • 2020-07-11
  • 1970-01-01
  • 2023-01-19
相关资源
最近更新 更多