Dauezevy
Dauezevy

Reputation: 1080

PHPExcel File format or extension is not valid 2

I'm using phpexcel for export my query in excel file; however after I created file(which is xslx format), I can not open my file in excel. It gives "the file format or extension is not valid. If i try to open with OpenOffice Calc it opens correctly. But excelviewer does not open.

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

Upvotes: 1

Views: 1997

Answers (1)

Mark Baker
Mark Baker

Reputation: 212522

Always make sure that the PHPExcel save stream is the only output being generated when you send output directly to the browser (php://output). This means that any echo or print statements like

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

or

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

must not be used in your script

Upvotes: 3

Related Questions