简体   繁体   中英

PHPExcel won't work

I'm trying to print my SQL query that I have generated in PHP to an Excel file using PHPExcel. I'm not sure where I've made a mistake, but every time I run my code, I get a blank page.

This is my code:

<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>

Any help would be much appreciated! Thanks

maybe bucause you have the include : librarie excel2007

require_once("Classes/PHPExcel/Writer/Excel2007.php");

and when you save the document in excel2007 the extention is .xlsx

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

this can be a option

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

$objWriter->save('php://output')

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

Your str_replace() isn't valid syntax for PHP, I'm surprised this error isn't being logged somewhere... mismatched quotes, as any decent syntax highlighting editor would have told you

And the silly thing is, you don't even need the str_replace. The PHPExcel Writer save() method expects a string value as a filename, it doesn't care how that string is generated, so just pass it a string

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM