首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用php/js将生成的数据导出到excel

用php/js将生成的数据导出到excel
EN

Stack Overflow用户
提问于 2021-01-06 22:11:40
回答 1查看 77关注 0票数 0

我有两个日期输入字段(startdate,endate),用户可以选择。选择后,数据将以表格格式显示用户提供的2个日期之间注册的数据。如何在没有第三方插件情况下通过单击按钮将表格中显示的数据导出到excel中?

我使用的代码:

代码语言:javascript
复制
<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>";
        }}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-06 22:25:52

exportTableToExcel()函数将HTML表格数据转换为excel并下载为XLS文件(.xls)。

=> tableID -必需。指定要从中导出数据的HTML表ID。

=>文件名-可选。指定要下载excel数据的文件名。

js代码:-

代码语言:javascript
复制
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表格包含一些用户数据和一些基本字段,在你的例子中你有日期,在下面的代码中你可以看到名字,电子邮件,等等……

代码语言:javascript
复制
<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表数据。

代码语言:javascript
复制
<button onclick="exportTableToExcel('tblData')">Export Table Data To Excel File</button>

如果要使用自定义文件名导出数据,请在exportTableToExcel()函数中传递所需的文件名。

代码语言:javascript
复制
<button onclick="exportTableToExcel('tblData', 'members-data')">Export Table Data To Excel File</button>

此代码可帮助您在没有任何第三方jQuery插件或服务器端脚本的情况下在表数据中添加导出功能。您可以使用最少的JavaScript代码轻松导出表数据。此外,示例代码的功能可以根据您的需要进行扩展。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65597341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档