php - 如何使用 Php 将 Html 表导出为 CSV 和 PDF 格式

标签 php html mysql csv pdf

我创建了Html Table,其中有mysql 表的数据,现在我想将数据导出为CSV 和PDF 文件,如何?
我想,当我点击按钮(CSV 和 PDF 分开)时,它会自动下载格式正确的 CSV 和 PDF 文件。
我尝试了一些我在互联网上找到的脚本,但它不起作用,有些存在格式问题并保存并下载。
提前致谢。

<table id="example2" class="table table-bordered table-hover">
                <thead>
                <tr>
        <th>District</th>
        <th>Union Council</th>
        <th>Village</th>
        <th>Recreational</th>
        <th>Awareness Raising</th>
        <th>Training</th>
        <th>Social Mobilization</th>
        <th>Total Activities</th>

                </tr>
                </thead>
                  <tbody>
      <tr>
      <td style="color:red;"><b><?php echo getTotalDistrictUnique();?></b></td>
      <td style="color:red;"><b><?php echo getTotalUnionCouncilUnique();?></b></td>
      <td style="color:red;"><b><?php echo getTotalVillages(); ?></b></td>
      <td style="color:red;"><b><?php echo getTotalRecreational();?></b></td>
      <td style="color:red;"><b><?php echo getTotalAwareness();?></b></td>
      <td style="color:red;"><b><?php echo getTotalTraining();?></b></td>
      <td style="color:red;"><b><?php echo getTotalSocial();?></b></td>
      <td style="color:red;"><b><?php echo getTotalRecreational() + getTotalAwareness() + getTotalTraining() + getTotalSocial(); ?></td>

      </tr>

      <?php
include("connection.php");
$query ="select * from general";
$run =mysqli_query($con,$query);
while ($row=mysqli_fetch_array($run)) {
    $id=$row['id'];
    $createdate=$row[1];
    $createday=$row[2];
    $partnername=$row[3];
    $district=$row[4];
    $unioncouncil=$row[5];
    $village=$row[6];
    $vannumber=$row[7];
    $facilitator=$row[8];
    $beneficiarytype=$row[9];
    $rmultimedia=$row[10];
    $rgame=$row[11];
    $rsprort=$row[12];
    $rart=$row[13];
    $rgroupreading=$row[14];
    $rother=$row[15];
    $alandminer=$row[16];
    $apersonalsafety=$row[17];
    $abirthregister=$row[18];
    $aother=$row[19];
    $tstickstone=$row[20];
    $tohthers=$row[21];
    $sbirthregister=$row[22];
    $sother=$row[23];
    $formnumber=$row[24];
    $submitdatatime=$row[25];
?>

      <tr>
      <td><?php echo $district?></td>
      <td><?php echo $unioncouncil?></td>
      <td><?php echo $village?></td>
      <td>
      <?php 
      if($rmultimedia=='true')
       {
        $rmultimedia_value = 1;
        }
        else{
            $rmultimedia_value = 0;
        }

        if($rgame=='true')
       {
        $rgame_value = 1;
        }
        else{
            $rgame_value = 0;
        }

        if($rsprort=='true')
       {
        $rsprort_value = 1;
        }
        else{
            $rsprort_value = 0;
        }

        if($rart=='true')
       {
        $rart_value = 1;
        }
        else{
            $rart_value = 0;
        }

        if($rgroupreading=='true')
       {
        $rgroupreading_value = 1;
        }
        else{
            $rgroupreading_value = 0;
        }

        if($rother=='true')
       {
        $rother_value = 1;
        }
        else{
            $rother_value = 0;
        }

      $recreational_sum = $rmultimedia_value + $rgame_value + $rsprort_value + $rart_value + $rgroupreading_value + $rother_value;

      echo $recreational_sum;?></td>

      <td>
          <?php 
      if($alandminer=='true')
       {
        $alandminer_value = 1;
        }
        else{
            $alandminer_value = 0;
        }

        if($apersonalsafety=='true')
       {
        $apersonalsafety_value = 1;
        }
        else{
            $apersonalsafety_value = 0;
        }

        if($abirthregister=='true')
       {
        $abirthregister_value = 1;
        }
        else{
            $abirthregister_value = 0;
        }

        if($aother=='true')
       {
        $aother_value = 1;
        }
        else{
            $aother_value = 0;
        }

      $awareness_raising_sum = $alandminer_value + $apersonalsafety_value + $abirthregister_value + $aother_value;

      echo $awareness_raising_sum;?>
      </td>

      <td>
              <?php 
      if($tstickstone=='true')
       {
        $tstickstone_value = 1;
        }
        else{
            $tstickstone_value = 0;
        }

        if($tohthers=='true')
       {
        $tohthers_value = 1;
        }
        else{
            $tohthers_value = 0;
        }

      $training_sum = $tstickstone_value + $tohthers_value;

      echo $training_sum;?>
      </td>

      <td>
        <?php 
      if($sbirthregister=='true')
       {
        $sbirthregister_value = 1;
        }
        else{
            $sbirthregister_value = 0;
        }

        if($sother=='true')
       {
        $sother_value = 1;
        }
        else{
            $sother_value = 0;
        }

      $social_mobilization_sum = $sbirthregister_value + $sother_value;

      echo $social_mobilization_sum;?>
      </td>

      <td style="color:red;"><?php echo $recreational_sum + $awareness_raising_sum + $training_sum + $social_mobilization_sum;?></td>

      </tr>
<?php } ?>
    </tbody>
              </table>

最佳答案

从末尾的 HTML 下载 CSV

$(function () {
    $(".export-csv").on('click', function (event) {
        // CSV
        var filename = $(".export-csv").data("filename")
        var args = [$('#fixed_table'), filename + ".csv", 0];
        exportTableToCSV.apply(this, args);
    });
    $(".export-txt").on('click', function (event) {
        // txt
        var filename = $(".export-txt").data("filename")
        var args = [$('#fixed_table'), filename + ".txt", 0];
        exportTableToCSV.apply(this, args);
    });

    
    function exportTableToCSV($table, filename, type) {
        var startQuote = type == 0 ? '"' : '';
        var $rows = $table.find('tr').not(".no-csv"),
            // Temporary delimiter characters unlikely to be typed by keyboard
            // This is to avoid accidentally splitting the actual contents
            tmpColDelim = String.fromCharCode(11), // vertical tab character
            tmpRowDelim = String.fromCharCode(0), // null character
            // actual delimiter characters for CSV/Txt format
            colDelim = type == 0 ? '","' : '\t',
            rowDelim = type == 0 ? '"\r\n"' : '\r\n',
            // Grab text from table into CSV/txt formatted string
            csv = startQuote + $rows.map(function (i, row) {
                var $row = $(row),
                    $cols = $row.find('td,th');
                return $cols.map(function (j, col) {
                    var $col = $(col),
                        text = $col.text().trim().indexOf("is in cohort") > 0 ? $(this).attr('title') : $col.text().trim();
                    return text.replace(/"/g, '""'); // escape double quotes

                }).get().join(tmpColDelim);

            }).get().join(tmpRowDelim)
                .split(tmpRowDelim).join(rowDelim)
                .split(tmpColDelim).join(colDelim) + startQuote;
        // Deliberate 'false', see comment below
        if (false && window.navigator.msSaveBlob) {
            var blob = new Blob([decodeURIComponent(csv)], {
                type: 'text/csv;charset=utf8'
            });

              window.navigator.msSaveBlob(blob, filename);

        } else if (window.Blob && window.URL) {
            // HTML5 Blob        
            var blob = new Blob([csv], { type: 'text/csv;charset=utf8' });
            var csvUrl = URL.createObjectURL(blob);

            $(this)
                .attr({
                    'download': filename,
                    'href': csvUrl
                });
        } else {
            // Data URI
            var csvData = 'data:application/csv;charset=utf-8,' + encodeURIComponent(csv);

            $(this)
                .attr({
                    'download': filename,
                    'href': csvData,
                    'target': '_blank'
                });
        }
    }

});
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Export CSV</title>
<script 
 src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>
    <style type="text/css">
        #page-wrapper {
             margin: 0 0 0 0; 
        }
    </style>
</head>
<body>
    <div id="wrapper">
        <!-- Page Content -->
        <div id="page-wrapper">
            <div class="container-fluid">
                <div class="row">
                    <div class="col-lg-12">
                       

<style>


</style>
<h2>
    Export to CSV 

    <!-- Single button -->
    <span class="btn-group  pull-right">
        <ul class="dropdown-menu">
            <li><a href=javascript:; class="export-csv" data-filename="CSVFILE">CSV</a></li>
            <li><a href=javascript:; class="export-txt" data-filename="TXTFILE">Flat file</a></li>
        </ul>
    </span>

</h2>
<hr />

<div class="row">
    <div class="col-md-2 col-sm-4 col-xs-12">

    </div>
</div>
<div class="row">
    <div class="col-md-12">
        <div class="table-responsive">
            <table id="fixed_table" class="table table-condensed  row-border order-column" cellspacing="0">
                <thead>
                    <tr>
                       <th>First Header</th>
                        <th >Second Header</th>

                       

                    </tr>
                </thead>
                <tbody>
                        <tr>
                            <td class="text-center"> First Row column 1</td>
                                <td>First Row column 2</td>
                            
                        </tr>
						</tbody>
            </table>
        </div>
    </div>
</div>






</body>
</html>

关于php - 如何使用 Php 将 Html 表导出为 CSV 和 PDF 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44667385/

相关文章:

javascript - 是否可以在 HTML 表单中制作您自己的自定义输入类型?

mysql - 将计数存储在变量中,插入到行中,并在 MySQL 中使用 IF 语句

python - 使用 Python 在 OSX 上写入 MySQL 的设置更简单

mysql - 选择与一组前缀匹配的行

PHPUnit Mock 似乎没有调用公共(public)函数

php - mysql 左连接 9 个表

javascript - 使用 css 和 javascript 显示文件名

javascript - 图库不适用于 iPad/移动设备

php - 如何在 url php 中返回 $_GET 变量的名称

PHP,读取通过 cURL 发送的 XML 文件