PHP 从 MYSQL 导出到 excel
PHP Export to excel from MYSQL
我正在尝试将我的 MySQL 数据写入 Excel 文件,但我在 Excel 单元格方面遇到问题。我所有的文本都放在一个单元格中,我希望每一行的值都在单独的 Excel 单元格中。这是我的代码:
<html xmlns:o="urn:schemas-microsoft-com:office:office"xmlns:x="urn:schemas-microsoft-com:office:excel"xmlns="http://www.w3.org/TR/REC-html40">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta charset="UTF-8">
<title>Daily Log</title>
</head>
<body>
<?php
ini_set('display_errors', 1);
error_reporting(~0);
$strKeyword = null;
if (isset($_POST["txtKeyword"])) {
$strKeyword = $_POST["txtKeyword"];
}
?>
<form name="frmSearch" method="post" action="<?php echo $_SERVER['SCRIPT_NAME'];?>">
<table>
<tr>
<th>Date
<input name="txtKeyword" type="month" id="txtKeyword" value="<?php echo $strKeyword;?>">
<input type="submit" value="Search"></th>
<input type="submit" value="Export"></th>
</tr>
<tr>
<th><label>Date</label></th>
<th><label>Requested</label></th>
<th><label>Requested Time</label></th>
<th><label>Location</label></th>
<th><label>Description</label></th>
<th><label>Order By</label></th>
<th><label>Completed by</label></th>
<th><label>Completed Time</label></th>
</tr>
<tr><!--/*DESC ASP*/-->
<?php include('config.php');
$filename = "excelfilename";
$strsql = "select * from log WHERE dateorder LIKE '%".$strKeyword."%'";
$result = mysqli_query($objConnect, $strsql);
$strExcelFileName="Member-All.xls";
header("Content-Type: application/x-msexcel; name=\"$strExcelFileName\"");
header("Content-Disposition: inline; filename=\"$strExcelFileName\"");
header("Pragma:no-cache");
while ($rs = mysqli_fetch_array($result,MYSQLI_ASSOC))
{
?>
<td><?php echo $rs['dateorder'] ?></td>
<td><?php echo $rs['request'] ?></td>
<td><?php echo date("H:i", strtotime($rs['requesttime'])) ?></td>
<td><?php echo $rs['location'] ?></td>
<td><?php echo $rs['description'] ?></td>
<td><?php echo $rs['orderby'] ?></td>
<td><?php echo $rs['completed'] ?></td>
<td><?php echo date("H:i", strtotime($rs['completedtime'])) ?></td>
</tr>
<?php } ?>
</table>
</form>
<script>
window.onbeforeunload = function(){return false;};
setTimeout(function(){window.close();}, 10000);
</script>
</body>
</html>
我需要第 1 步搜索按钮第 2 步导出按钮
考虑使用从 MySQL 查询中获取的相同 PHP 数组分离 HTML 输出和 Excel 导出。将以下部分集成到您的代码中。
具体来说,Excel 需要 tab-delimited 文本映射到带有回车符和换行符的单元格。
数据库获取
...same db config...
$data = []
while ($rs = mysqli_fetch_array($result,MYSQLI_ASSOC)) {
$data[] = $row;
}
HTML输出
foreach ($data as $row) { ?>
<tr>
<td><?php echo $row['dateorder'] ?></td>
<td><?php echo $row['request'] ?></td>
<td><?php echo date("H:i", strtotime($row['requesttime'])) ?></td>
<td><?php echo $row['location'] ?></td>
<td><?php echo $row['description'] ?></td>
<td><?php echo $row['orderby'] ?></td>
<td><?php echo $row['completed'] ?></td>
<td><?php echo date("H:i", strtotime($row['completedtime'])) ?></td>
</tr>
<?php } ?>
Excel 导出
$strExcelFileName="Member-All.xls";
header("Content-Type: application/x-msexcel; name=\"$strExcelFileName\"");
header("Content-Disposition: attachment; filename=\"$strExcelFileName\"");
header("Pragma:no-cache");
$i = 1;
foreach ($data as $row) {
if ($i == 1) {
// COLUMN HEADERS
echo implode("\t", array_keys($row)) . "\r\n";
}
// DATA ROWS
echo implode("\t", array_values($row)) . "\r\n";
$i++;
}
我正在尝试将我的 MySQL 数据写入 Excel 文件,但我在 Excel 单元格方面遇到问题。我所有的文本都放在一个单元格中,我希望每一行的值都在单独的 Excel 单元格中。这是我的代码:
<html xmlns:o="urn:schemas-microsoft-com:office:office"xmlns:x="urn:schemas-microsoft-com:office:excel"xmlns="http://www.w3.org/TR/REC-html40">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta charset="UTF-8">
<title>Daily Log</title>
</head>
<body>
<?php
ini_set('display_errors', 1);
error_reporting(~0);
$strKeyword = null;
if (isset($_POST["txtKeyword"])) {
$strKeyword = $_POST["txtKeyword"];
}
?>
<form name="frmSearch" method="post" action="<?php echo $_SERVER['SCRIPT_NAME'];?>">
<table>
<tr>
<th>Date
<input name="txtKeyword" type="month" id="txtKeyword" value="<?php echo $strKeyword;?>">
<input type="submit" value="Search"></th>
<input type="submit" value="Export"></th>
</tr>
<tr>
<th><label>Date</label></th>
<th><label>Requested</label></th>
<th><label>Requested Time</label></th>
<th><label>Location</label></th>
<th><label>Description</label></th>
<th><label>Order By</label></th>
<th><label>Completed by</label></th>
<th><label>Completed Time</label></th>
</tr>
<tr><!--/*DESC ASP*/-->
<?php include('config.php');
$filename = "excelfilename";
$strsql = "select * from log WHERE dateorder LIKE '%".$strKeyword."%'";
$result = mysqli_query($objConnect, $strsql);
$strExcelFileName="Member-All.xls";
header("Content-Type: application/x-msexcel; name=\"$strExcelFileName\"");
header("Content-Disposition: inline; filename=\"$strExcelFileName\"");
header("Pragma:no-cache");
while ($rs = mysqli_fetch_array($result,MYSQLI_ASSOC))
{
?>
<td><?php echo $rs['dateorder'] ?></td>
<td><?php echo $rs['request'] ?></td>
<td><?php echo date("H:i", strtotime($rs['requesttime'])) ?></td>
<td><?php echo $rs['location'] ?></td>
<td><?php echo $rs['description'] ?></td>
<td><?php echo $rs['orderby'] ?></td>
<td><?php echo $rs['completed'] ?></td>
<td><?php echo date("H:i", strtotime($rs['completedtime'])) ?></td>
</tr>
<?php } ?>
</table>
</form>
<script>
window.onbeforeunload = function(){return false;};
setTimeout(function(){window.close();}, 10000);
</script>
</body>
</html>
我需要第 1 步搜索按钮第 2 步导出按钮
考虑使用从 MySQL 查询中获取的相同 PHP 数组分离 HTML 输出和 Excel 导出。将以下部分集成到您的代码中。
具体来说,Excel 需要 tab-delimited 文本映射到带有回车符和换行符的单元格。
数据库获取
...same db config...
$data = []
while ($rs = mysqli_fetch_array($result,MYSQLI_ASSOC)) {
$data[] = $row;
}
HTML输出
foreach ($data as $row) { ?>
<tr>
<td><?php echo $row['dateorder'] ?></td>
<td><?php echo $row['request'] ?></td>
<td><?php echo date("H:i", strtotime($row['requesttime'])) ?></td>
<td><?php echo $row['location'] ?></td>
<td><?php echo $row['description'] ?></td>
<td><?php echo $row['orderby'] ?></td>
<td><?php echo $row['completed'] ?></td>
<td><?php echo date("H:i", strtotime($row['completedtime'])) ?></td>
</tr>
<?php } ?>
Excel 导出
$strExcelFileName="Member-All.xls";
header("Content-Type: application/x-msexcel; name=\"$strExcelFileName\"");
header("Content-Disposition: attachment; filename=\"$strExcelFileName\"");
header("Pragma:no-cache");
$i = 1;
foreach ($data as $row) {
if ($i == 1) {
// COLUMN HEADERS
echo implode("\t", array_keys($row)) . "\r\n";
}
// DATA ROWS
echo implode("\t", array_values($row)) . "\r\n";
$i++;
}