Php 如何在xlsxwriter类中使用mysql while循环?
我正在使用xlsxwriter,但没有任何效果,我尝试了很多方法将mysql数据库行数据传输到excel行数据,但没有任何效果:( $row_numb++; }Php 如何在xlsxwriter类中使用mysql while循环?,php,mysql,Php,Mysql,我正在使用xlsxwriter,但没有任何效果,我尝试了很多方法将mysql数据库行数据传输到excel行数据,但没有任何效果:( $row_numb++; } $writer->writeToStdOut(); exit(0); 试试这个: while ($row = mysqli_fetch_row($result)) { $data = array(); for ($i = 0; $i < mysqli_num_fields($result); $i++)
$writer->writeToStdOut();
exit(0);
试试这个:
while ($row = mysqli_fetch_row($result)) {
$data = array();
for ($i = 0; $i < mysqli_num_fields($result); $i++) {
$data[$i] = $row[$i];
}
$writer->writeSheetRow('Sheet1', $data);
}
$writer->writeToStdOut();
exit(0);
while($row=mysqli\u fetch\u row($result)){
$data=array();
对于($i=0;$iwriteSheetRow('Sheet1',$data);
}
$writer->writeToStdOut();
出口(0);
$data=array();
$result=mysqli_query($conn,$sql)或die(mysqli_error($sql));
while($row=mysqli\u fetch\u row($result)){
回声“
”;
对于($i=0;$i
我尝试了这段代码,它向我显示了数据库中的数据。嘿,我正在回答一个有点老的问题,但如果有像@Rocky Rock和我这样的问题,它可能会帮助一些人 此外,我还需要处理大量的行,比如50000到100000行。所以我甚至尝试了其他一些解决方案,比如将结果分块,并尝试导出到csv等 我还尝试了使用header和$writer->writeToStdOut()强制下载的所有功能;但所有逻辑都是徒劳的 但最后,经过一两天的工作,我将其编码为“给予并摆脱一切”,相信我,它还可以在20秒内下载100000行。。 这是我的代码,因此您可以随意使用查询和文件名的会话变量,也可以为我们的一个客户机设置一些虚拟变量
<?php
include your required libraries..
include_once("lib/xlsxwriter.class.php");
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Download IDs</title>
</head>
<body>
<?php
$sqlsel = $_SESSION['rptQry'];
$ressql = mysqli_query($sqlsel);
$currentdt = date('Ymdhis');
$filename = $currentdt."_".$_SESSION['rptFileName'];
$header = array(
'Header1'=>'integer',
'Header 2'=>'integer',
'Header 3'=>'string',
'Header 4' =>'string'
);
$dataArray = array();
$writer = new XLSXWriter();
$writer->setAuthor('Adaptable Services');
$writer->writeSheetHeader('ExportedIDs', $header);
while($res = mysqli_fetch_array($ressql)){
$writer->writeSheetRow('Sheet1',$res);
}
$writer->writeToFile('/var/www/html/tmpxls/'.$filename);
echo '<script>location.href="www.example.com/tmpxls/'.$filename.'";</script>';
?>
</body>
</html>
下载ID
如果它“不起作用”会发生什么?是否涉及任何错误消息?您是否检查了数据库查询本身是否返回正确的行?是的,我检查了查询它工作正常,但代码创建问题,原因是excel无法打开该文件,因为文件扩展名无效或文件已损坏。该文件包含什么内容?您是否尝试使用记事本打开它?否r、 我将立即检查它是否显示一些不可读的文本,65KB的文件。感谢您的时间,我尝试了,但excel文件仍然没有打开,记事本是空的。我认为问题在于您的数据。如果打印$行,您能给我们显示结果吗?是的,我忘记了用$result变量连接查询。现在记事本显示65KB的不可读文本但excel仍然显示它的currupt文件,而不显示其中的数据:(甚至尝试了这个…$writer->writeSheetRow('Sheet1',$data[$i]);但仍然显示文件是currupt。可能您的数据具有特殊字符,可能会导致xlsxwriter的writeCell函数出错。
while ($row = mysqli_fetch_row($result)) {
$data = array();
for ($i = 0; $i < mysqli_num_fields($result); $i++) {
$data[$i] = $row[$i];
}
$writer->writeSheetRow('Sheet1', $data);
}
$writer->writeToStdOut();
exit(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];
}
}
<?php
include your required libraries..
include_once("lib/xlsxwriter.class.php");
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Download IDs</title>
</head>
<body>
<?php
$sqlsel = $_SESSION['rptQry'];
$ressql = mysqli_query($sqlsel);
$currentdt = date('Ymdhis');
$filename = $currentdt."_".$_SESSION['rptFileName'];
$header = array(
'Header1'=>'integer',
'Header 2'=>'integer',
'Header 3'=>'string',
'Header 4' =>'string'
);
$dataArray = array();
$writer = new XLSXWriter();
$writer->setAuthor('Adaptable Services');
$writer->writeSheetHeader('ExportedIDs', $header);
while($res = mysqli_fetch_array($ressql)){
$writer->writeSheetRow('Sheet1',$res);
}
$writer->writeToFile('/var/www/html/tmpxls/'.$filename);
echo '<script>location.href="www.example.com/tmpxls/'.$filename.'";</script>';
?>
</body>
</html>