Я пытаюсь создать цикл запросов mysql для его реализации в xlsxwriter php excel exporter, но мне трудно заставить его работать, он генерирует лист Excel, но говорит, что он поврежден и не работает.
Это исходный файл исходного кода:
<?php
include_once("xlsxwriter.class.php");
ini_set('display_errors', 0);
ini_set('log_errors', 1);
error_reporting(E_ALL & ~E_NOTICE);
$filename = "example.xlsx";
header('Content-disposition: attachment; filename="'.XLSXWriter::sanitize_filename($filename).'"');
header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate');
header('Pragma: public');
$rows = array(
array('test','1','-50.5','2010-01-01 23:00:00','2012-12-31 23:00:00'),
array('2003','=B1', '23.5','2010-01-01 00:00:00','2012-12-31 00:00:00'),
);
$writer = new XLSXWriter();
$writer->setAuthor('Some Author');
foreach($rows as $row)
$writer->writeSheetRow('Sheet1', $row);
$writer->writeToStdOut();
//$writer->writeToFile('example.xlsx');
//echo $writer->writeToString();
exit(0);
И это код, который я создал, и вы заметите, что в строке «WriteSheetRow» я сделал несколько фиктивных данных, просто чтобы проверитьесли это работает, а это не так:
<?php
include "session.php";
include_once("files/excel/xlsxwriter.class.php");
ini_set('display_errors', 0);
ini_set('log_errors', 1);
error_reporting(E_ALL & ~E_NOTICE);
$filename = "example.xlsx";
header('Content-disposition: attachment; filename="'.XLSXWriter::sanitize_filename($filename).'"');
header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate');
header('Pragma: public');
$writer = new XLSXWriter();
//define column headers
$headers = array('Product Id' => 'integer', 'Price' => 'price', 'Sale Price' => 'price', 'Sales Count' => 'integer', 'Sale Date' => 'string');
//write headers
$writer->writeSheetHeader('Sheet1', $headers);
$sql = "SELECT * FROM customeracct WHERE tourid=1005 AND status=1";
$result = $db->query($sql);
if ($result->num_rows > 0) { while($customeracct = $result->fetch_assoc()) {
$contactid = $customeracct["contactid"];
$contactsql = "SELECT * FROM contacts WHERE id=$contactid";
$contactresult = $db->query($contactsql);
$contactcustomer = $contactresult->fetch_assoc();
//write rows to sheet1
$writer->writeSheetRow('Sheet1',array('test','1','-50.5','2010-01-01 23:00:00','2012-12-31 23:00:00'));
}}
$writer->setAuthor('Good Shepherd Travels');
exit(0);
Не могли бы вы помочь мне проверить, правильно ли это, или есть ли лучший способ сделать это?Я попытался сделать цикл внутри массива, но не получается иметь условный код php внутри массива.
Спасибо.