【发布时间】:2022-01-20 12:40:18
【问题描述】:
我目前正在尝试使用 PHP 和 SQL Server 将订单的月度发票自动发送到我的应用程序及其后端。 我提到了使用 MySQL 作为后端的人们的各种其他问题,但它仍然不起作用并且无法创建 Excel 文件。我尝试创建一个 CSV 文件,它可以工作,但它只获取了一条记录。
我的PHP代码如下:
<?php
include 'db_connect.php';
$filename = "excelfilename";
$file_ending = "xls";
header("Content-Type: application/xls");
header("Content-Disposition: attachment; filename=$filename.xls");
header("Pragma: no-cache");
header("Expires: 0");
$sql = "SELECT *
FROM Trn_Order tro
INNER JOIN Trn_Place_Order tpo ON tro.Order_Id = tpo.Order_Id
INNER JOIN Mst_User_Login mul ON tro.User_Id = mul.User_Id
WHERE tro.Status != 'Rejected'
AND tro.Added_On LIKE '2022-01%'
ORDER BY tro.Order_Id ASC";
$result = sqlsrv_query($conn, $sql);
$sep = '\t';
for ($i = 0;$i < sqlsrv_num_fields($result);$i++) {
echo sqlsrv_get_field($result, $i) . '\t';
}
echo '\n';
while ($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_BOTH)) {
$schema_insert = "";
for ($j = 0;$j < sqlsrv_num_fields($result);$j++) {
if (!isset($row[$j])) {
$schema_insert = $schema_insert."NULL" . $sep;
} elseif ($row[$j] != "") {
$schema_insert = $schema_insert. "$row[$j]" . $sep;
} else {
$schema_insert = $schema_insert."" . $sep;
}
}
$schema_insert = str_replace($sep . "$", "", $schema_insert);
$schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert);
$schema_insert = $schema_insert. "\t";
echo trim($schema_insert);
echo '\n';
}
?>
** 工作代码 **
<?php
date_default_timezone_set('Asia/Kolkata');
include 'db_connect.php';
$FileName = "MonthlyExcelReport.csv";
$fp = fopen('php://output', 'w');
$Fetch_Month = $_POST["Fetch_Month"];
$sql = "SELECT tro.Order FROM Trn_Order tro
INNER JOIN Mst_User_Login mul
ON tro.User_Id = mul.User_Id
WHERE tro.Status != 'Rejected' AND tro.Added_On LIKE '2022-01%' ORDER BY tro.Order_Id ASC";
$resec = sqlsrv_query($conn, $sql);
while ($export= sqlsrv_fetch_array($resec, SQLSRV_FETCH_ASSOC))
{
if (!isset($headings))
{
$headings = array_keys($export);
fputcsv($fp, $headings, ',', '"');
}
fputcsv($fp, $export, ',', '"');
}
fclose($fp);
header('Content-Type: application/csv');
header('Content-Disposition: attachment; filename='.$FileName.'');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize("php://output"));
readfile("php://output");
?>
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。
标签: php sql sql-server excel