我有两个日期输入字段(startdate,endate),用户可以选择。选择后,数据将以表格格式显示用户提供的2个日期之间注册的数据。如何在没有第三方插件情况下通过单击按钮将表格中显示的数据导出到excel中?
我使用的代码:
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
startdate: <input type="date" name="from_date">
enddate: <input type="date" name="to_date">
<input type="submit" name="date" id="date">
</form>
<!--<div>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
<button type="submit" name="excel" value="excel" id='excel'> Export to excel</button>
</form>
</div> --->
<?php
require('settings.php');
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
if (isset($_POST["date"])) {
$startDate = date("Y-m-d", strtotime($_POST['from_date'])); // Y-m-d
$endDate = date("Y-m-d", strtotime($_POST['to_date'])); // something weird is happening with the dates random dates slip between date ranges
$sql = "SELECT distinct latestv.* from(
select distinct Werkomschrijving_nr from POH_GL4 where versie Between ? and ? ) changedw
left join
(select distinct Werkomschrijving_nr, max(versie) AS maxdate, omschrijving from POH_GL4
group by Werkomschrijving_nr,omschrijving) latestv on latestv.Werkomschrijving_nr = changedw.Werkomschrijving_nr";
$stmt = $db->prepare($sql);
$stmt->execute([$startDate, $endDate]);
$result = $stmt->fetchAll();
echo "<table>";
echo "<tr><th>nr werkomschrijving</th><th>Last change date </th><th>Omschrijving</th></tr>";
foreach ($result as $key => $row) {
echo "<tr>";
echo "<td>" . $row['Werkomschrijving_nr'] . "</td>";
echo "<td>" . $row['maxdate'] . "</td>";
echo "<td>" . $row['omschrijving'] . "</td>";
echo "</tr>";
}}发布于 2021-01-06 22:25:52
exportTableToExcel()函数将HTML表格数据转换为excel并下载为XLS文件(.xls)。
=> tableID -必需。指定要从中导出数据的HTML表ID。
=>文件名-可选。指定要下载excel数据的文件名。
js代码:-
function exportTableToExcel(tableID, filename = ''){
var downloadLink;
var dataType = 'application/vnd.ms-excel';
var tableSelect = document.getElementById(tableID);
var tableHTML = tableSelect.outerHTML.replace(/ /g, '%20');
// Specify file name
filename = filename?filename+'.xls':'excel_data.xls';
// Create download link element
downloadLink = document.createElement("a");
document.body.appendChild(downloadLink);
if(navigator.msSaveOrOpenBlob){
var blob = new Blob(['\ufeff', tableHTML], {
type: dataType
});
navigator.msSaveOrOpenBlob( blob, filename);
}else{
// Create a link to the file
downloadLink.href = 'data:' + dataType + ', ' + tableHTML;
// Setting the file name
downloadLink.download = filename;
//triggering the function
downloadLink.click();
}
}Html表格: HTML表格包含一些用户数据和一些基本字段,在你的例子中你有日期,在下面的代码中你可以看到名字,电子邮件,等等……
<table id="tblData">
<tr>
<th>Name</th>
<th>Email</th>
<th>Country</th>
</tr>
<tr>
<td>John Doe</td>
<td>john@gmail.com</td>
<td>USA</td>
</tr>
<tr>
<td>Michael Addison</td>
<td>michael@gmail.com</td>
<td>UK</td>
</tr>
<tr>
<td>Sam Farmer</td>
<td>sam@gmail.com</td>
<td>France</td>
</tr>
</table>该按钮触发exportTableToExcel()函数以使用JavaScript导出HTML表数据。
<button onclick="exportTableToExcel('tblData')">Export Table Data To Excel File</button>如果要使用自定义文件名导出数据,请在exportTableToExcel()函数中传递所需的文件名。
<button onclick="exportTableToExcel('tblData', 'members-data')">Export Table Data To Excel File</button>此代码可帮助您在没有任何第三方jQuery插件或服务器端脚本的情况下在表数据中添加导出功能。您可以使用最少的JavaScript代码轻松导出表数据。此外,示例代码的功能可以根据您的需要进行扩展。
https://stackoverflow.com/questions/65597341
复制相似问题