Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在xlsxwriter类中使用mysql while循环?_Php_Mysql - Fatal编程技术网

Php 如何在xlsxwriter类中使用mysql while循环?

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

我正在使用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++) {
        $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>