2014-02-12 78 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');