我有关于 phpexcel 和 joomla 的问题。我正在开发一些过滤表单来加载 excel 报告,所以我使用 phpexcel 库来执行此操作。现在我只有一个报告,它工作正常,但之后我使用PHP 页面组件在 joomla 中上传,该组件允许我将 php 文件放入 joomla 并调用它。
当我放置它们时,我稍微更改了调用生成 excel 报告的 php 的表单,我使用如下链接调用 php:
h**p://www.whiblix.com/index.php?option=com_php&Itemid=24
也就是说,从 Joomla 调用它,而不是直接从 php.ini 调用它。如果我想直接调用 php,我可以使用这个路径:
h**p://www.whiblix.com/components/com_php/files/repImportaciones.php
有什么问题?问题是,当我调用通过 joomla 生成 excel 的 php 时,下载的 excel 已损坏,并且当我打开它时仅在一个单元格中显示符号。但是,如果我直接调用 php,则生成的报告很好。我可以直接调用php,问题是如果我直接调用它我不能使用这行代码:
defined( '_JEXEC' ) or die( 'Restricted access' );
用于拒绝直接调用 php 直接访问它,因为它不工作,因为它的安全性。
问题出在哪里?这是生成报告的 php 代码(省略生成行和单元格的代码):
<?php
//defined( '_JEXEC' ) or die( 'Restricted access' );
/** Error reporting */
error_reporting(E_ALL);
date_default_timezone_set('Europe/London');
require_once 'Classes/PHPExcel.php';
// Create new PHPExcel object
$objPHPExcel = new PHPExcel();
// Set properties
$objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
->setLastModifiedBy("Maarten Balliauw")
->setTitle("Office 2007 XLSX Test Document")
->setSubject("Office 2007 XLSX Test Document")
->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
->setKeywords("office 2007 openxml php")
->setCategory("Test result file");
// Rename sheet
$objPHPExcel->getActiveSheet()->setTitle('Reporte de Importaciones');
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);
// Redirect output to a client’s web browser (Excel5)
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="repPrueba.xls"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;