我正在使用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);
答案 0 :(得分:0)
试试这个:
Diff:
Diff:
答案 1 :(得分:0)
$data = array();
$result=mysqli_query($conn,$sql) or die(mysqli_error($sql));
while ($row = mysqli_fetch_row($result)) {
echo "<br/>";
for ($i = 0; $i < mysqli_num_fields($result); $i++) {
$data[$i] = $row[$i];
echo $row[$i];
}
}
我尝试了这段代码,它向我展示了数据库中的数据。
答案 2 :(得分:0)
嘿,我想回答一个古老的问题,但如果遇到像@Rocky Rock和我这样的问题,这可能会对某人有所帮助。
此外,我还必须处理大量行,例如50,000至1,00,000。因此,我什至尝试了其他一些解决方案,例如将结果分块,并尝试导出到csv等中。
我也尝试通过强制下载头文件和$ writer-> writeToStdOut();进行所有操作。但是所有的逻辑都是徒劳的。
但是最终,经过一两天的努力,我将代码编码为“放弃”,相信我,它也可以在20秒内下载1,00万行。 这是我的代码,因此除了查询和文件名的会话变量外,您可以使用任何您喜欢的变量。我还要为我们的一位客户放置一些虚拟变量。
{"0":"<div class=\"col-sm-12 col-lg-6\">\r\n\r\nCaratteristiche principali:\r\n<ul>\r\n <li>Sistema multimediale Toyota Touch\ufffd 2 with Go con display 8'' e telecamera posteriore<\/li>\r\n <li>Sedile guidatore con supporto lombare regolabile elettricamente<\/li>\r\n <li>Sedili anteriori riscaldabili<\/li>\r\n <li>Toyota Safety Sense<\/li>\r\n<\/ul>\r\n<\/div>","sample_value":2}