我正在使用xlsxwriter,但对我来说没有任何效果,我尝试了许多方法将mysql数据库行数据转换为excel行数据,但都没有效果:(
<?php
include_once("xlsxwriter.class.php");
include("connection.php");
ini_set('display_errors', 0);
ini_set('log_errors', 1);
error_reporting(E_ALL & ~E_NOTICE);
$filename = "PM.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();
$sql = "SELECT DATE_FORMAT(jobcard.Open_date_time,' %d-%b-%y') AS datee,vehicles_data.Frame_no, jobcard.Jobc_id,jobcard.serv_nature,jobcard.Customer_name,jobc_invoice.Lnet, jobc_invoice.Pnet, jobc_invoice.Snet, jobcard.Mileage,customer_data.cust_type,vehicles_data.model_year,jobcard.Veh_reg_no,jobcard.comp_appointed, customer_data.mobile,IF(variant_codes.Make IS NULL,'Others',variant_codes.Make) as make FROM `jobcard` LEFT OUTER JOIN jobc_invoice ON jobcard.Jobc_id=jobc_invoice.Jobc_id LEFT OUTER JOIN vehicles_data ON jobcard.Vehicle_id=vehicles_data.Vehicle_id LEFT OUTER JOIN variant_codes ON vehicles_data.Model=variant_codes.Model LEFT OUTER JOIN customer_data ON jobcard.Customer_id=customer_data.Customer_id ORDER BY `make` ASC";
$result=mysqli_query($conn,$sql) or die(mysqli_error($sql));
while($rowz = mysqli_fetch_row($result))
{
$rows[] = $rowz;
}
$writer = new XLSXWriter();
$writer->setAuthor('Some Author');
foreach($rows as $row)
$writer->writeSheetRow('Sheet1', $row);
$writer->writeToStdOut();
exit(0);
甚至尝试了这个,玩数组,但没有任何成果。
$row_excel=array();
$row_numb=0;
$writer = new XLSXWriter();
$writer->setAuthor('Some Author');
$result=mysqli_query($conn,$sql) or die(mysqli_error($sql));
while($row = mysqli_fetch_row($result))
{
$row_excel[$row_numb]=$row;
$writer->writeSheetRow('Sheet1', $row_excel[$row_numb]);
$row_numb++;}
$writer->writeToStdOut();
exit(0);
3条答案
按热度按时间nr7wwzry1#
试试这个:
c9x0cxw02#
我尝试了这个代码,它显示了数据库中的数据。
lo8azlld3#
嘿,我在回答一个有点老的问题,但它可能会帮助一些人,如果有相同的问题,如“岩石和我”。
另外,我还要处理大量的行,比如50000到100000。所以我甚至尝试了一些其他的解决方案,比如分块我的结果,尝试导出到csv等等。
我还尝试了所有带有header和$writer->writetostdout()的强制下载;但每一个逻辑都是徒劳的。
但经过一两天的努力,我终于把它编码为“放弃一切”,相信我,它也可以在20秒内下载100000行。。这是我的代码,所以不用查询和文件名的会话变量,您可以随意使用。另外,我会把一些虚拟变量,因为它是为我们的客户之一。