我对phpexcel和joomla有问题.我正在开发一些过滤器表单来加载excel报告,因此我使用phpexcel库来做到这一点.现在我只有一个报告,它工作正常,但是之后我使用PHP pages component在joomla中上传了文件,这使我可以将php文件放在joomla中并进行调用.
当我把它们放进去时,我稍微改变了调用生成excel报告的php的形式,我使用这样的链接调用了php:
h**p://www.whiblix.com/index.php?option=com_php&Itemid=24
也就是说,从Joomla而不是直接从php调用它.如果我想直接调用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;
解决方法:
我已经为Joomla构建了一个库,它将使安装,使用和更新它的整个过程更加容易.您可以在github上签出.Joomla可用! 2.5和3
欢迎反馈.