![](/img/trans.png)
[英]How to customize exporting query result (PHP mysql) to excel file?
[英]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()
可以返回NULL
或FALSE
。 您可以按以下方式进行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.