2014-02-12 45 views
0

我试图将我在PHP中生成的SQL查询打印到使用PHPExcel的Excel文件中。我不确定我犯了什么错误,但每次运行我的代码时,我都会看到一个空白页。PHPExcel将不起作用

这是我的代码:

<html> 
<body> 

<?php 
mysql_connect("$host", $user, $password) or die("Couldn't connect to SQL Server on  $myServer"); 
mysql_select_db("$database") or die("Couldn't open database $myDB"); 

if (mysqli_connect_errno()) 
{ 
echo "Failed to connect to MySQL: " . mysql_connect_error(); 
} 
require_once("includes/session.php"); 
require_once("includes/connection.php"); 
require_once("includes/functions.php"); 

error_reporting(E_ALL); 
ini_set('display_errors', TRUE); 
ini_set('display_startup_errors', TRUE); 
date_default_timezone_set('Europe/London'); 

define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : ' 
'); 

/** Include PHPExcel */ 
require_once '/Classes/PHPExcel.php'; 


// Create new PHPExcel object 
$objPHPExcel = new PHPExcel(); 

$filter = $_SESSION['registry']; 
$query = "SELECT sales.invoiceNo, invoiceDate, dueDate, customerID, customerName, dateTrans, postDate, description, grossSale, vat, netSale, quantity, branch, despatchNote FROM sales2012 sales WHERE sales.invoiceNo IN (SELECT invoiceNo FROM sales2012 GROUP BY invoiceNo HAVING COUNT(invoiceNo)>1)"; 
$result_set = mysql_query($query); 
     confirm_query($result_set); 

// Add some data 
$objPHPExcel->setActiveSheetIndex(0) 
     ->setCellValue('A1', 'Invoice No') 
     ->setCellValue('B1', 'Invoice Date') 
     ->setCellValue('C1', 'Due Date') 
     ->setCellValue('D1', 'Customer ID') 
     ->setCellValue('E1', 'Customer Name') 
     ->setCellValue('F1', 'Transaction Date') 
     ->setCellValue('G1', 'Post Date') 
     ->setCellValue('H1', 'Description') 
     ->setCellValue('I1', 'Gross Sale') 
     ->setCellValue('J1', 'VAT') 
     ->setCellValue('K1', 'Net Sale') 
     ->setCellValue('L1', 'Quantity') 
     ->setCellValue('M1', 'Branch') 
     ->setCellValue('N1', 'Despatch Note'); 


     $row = 2; 
     while ($data = mysql_fetch_array($result_set)) { 
     $objPHPExcel->setActiveSheetIndex(0) 
     ->setCellValue('A' . $row, $data['invoiceNo']) 
     ->setCellValue('B'. $row, $data['invoiceDate']) 
     ->setCellValue('C'. $row, $data['dueDate']) 
     ->setCellValue('D'. $row, $data['customerID']) 
     ->setCellValue('E'. $row, $data['customerName']) 
     ->setCellValue('F'. $row, $data['dateTrans']) 
     ->setCellValue('G'. $row, $data['postDate']) 
     ->setCellValue('H'. $row, $data['description']) 
     ->setCellValue('I'. $row, $data['grossSale']) 
     ->setCellValue('J'. $row, $data['vat']) 
     ->setCellValue('K'. $row, $data['netSale']) 
     ->setCellValue('L'. $row, $data['quantity']) 
     ->setCellValue('M'. $row, $data['branch']) 
     ->setCellValue('N'. $row, $data['descriptionNote']); 
     $row++; 
     } 

// Set active sheet index to the first sheet, so Excel opens this as the first sheet 
$objPHPExcel->setActiveSheetIndex(0); 


$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); 
$objWriter->save(str_replace('__FILE__,'/desktop/filename.xls',__FILE__)); 

?> 
</body> 
</html> 

任何帮助,将不胜感激! 感谢

+0

添加'的error_reporting(E_STRICT | E_ALL);'到查看你的PHP的顶部,看看可能存在的错误。忽略我......刚才看到你已经有了。 – superphonic

+0

我认为这里的空白页是正确的。在该文件中没有任何输出到屏幕上。它保存到桌面上的.xls文件 – superphonic

+0

当我检查桌面时,我没有.xls文件 – goroved

回答

0

也许bucause你有包括:librarie Excel2007中

require_once( “类/ PHPExcel /作家/ Excel2007.php”);

,当您将文档保存在Excel2007中进一步扩展是的.xlsx

$ objWriter->保存(str_replace函数(” FILE, '/桌面/ filename.xls',FILE ));

这可以是一个选项

$ objWriter = PHPExcel_IOFactory :: createWriter($ objPHPExcel, 'Excel2007的');

$ objWriter->保存( 'PHP://输出')

+0

感谢您的建议,但它没有工作:( – goroved

+0

@goroved - 当某些“不起作用”时,它是总是有助于说出你的意思是“不工作”,它是否显示任何错误信息?它是否向PHP或Web服务器日志写入任何内容?它是否会对您进行电定位?是否写入包含无效数据的文件? –

0
$objWriter->save(
    str_replace('__FILE__,'/desktop/filename.xls',__FILE__) 
); 

你str_replace()函数不是PHP有效语法,我很惊讶,没有被记录此错误某处...不匹配的引号,因为任何体面的语法突出编辑会告诉你

而愚蠢的是,你甚至不需要str_replace。该PHPExcel作家save()方法需要一个字符串值作为文件名,它并不关心如何生成字符串,所以只是传递一个字符串

$objWriter->save('/desktop/filename.xls');