繁体   English   中英

在PHP中创建数据库查询结果的Excel文件

[英]create excel file of database query result in php

我使用php创建了excel文件。它包含了来自数据库的查询结果数据.Excel文件生成并下载得很好,但是当我打开时我发现它给出了一些格式错误和一些编码错误。 在此处输入图片说明

function generate_excel($conn) {
 $filename = "website_data_" . date('Ymd') . ".xls";

 function cleanData(&$str) {
    $str = preg_replace("/\t/", "\\t", $str);
    $str = preg_replace("/\r?\n/", "\\n", $str);
    if (strstr($str, '"'))
        $str = '"' . str_replace('"', '""', $str) . '"';
}

header("Content-Disposition: attachment; filename=\"$filename\"");
header("Content-type: application/octet-stream;charset=utf-8");

 $flag = false;
 $qry = "SELECT ContactId,UniqueContactId FROM Contacts ORDER BY ContactId  ";
 $stmt = sqlsrv_query($conn, $qry);
 $row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC);

while (false !== ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC))) {
    if (!$flag) {
        // display field/column names as first row
        echo implode("\t", array_keys($row)) . "\r\n";
        $flag = true;
    }
    array_walk($row, 'cleanData');
    echo implode("\t", array_values($row)) . "\r\n";
}
exit;
}

sqlsrv_fetch_array()可以返回NULLFALSE 您可以按以下方式进行while语句:

while (NULL !== ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC))) {
    if(!$row)
        break ;

    //...
}

这是PHP函数参考: http : //php.net/manual/en/function.sqlsrv-fetch-array.php

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM