【发布时间】: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 文件