简体   繁体   English

如何使用php将HTML表格导出为CSV和PDF格式

[英]How to Export Html Table to CSV and PDF with formatting using Php

I created Html Table, in which there is data from mysql tables, and now i want to export the data into CSV and PDF file, how? 我创建了Html Table,其中有来自mysql表的数据,现在我想将数据导出为CSV和PDF文件,怎么办?
I want to, when i click on button (separate for both CSV and PDF), it automatically download in CSV and PDF file with correct Formatting. 我想要,当我单击按钮(CSV和PDF都分开)时,它会以正确的格式自动下载为CSV和PDF文件。
I try some of script i found on internet, but it is not working, some have formatting issue and save have downloading. 我尝试了一些在Internet上找到的脚本,但是该脚本不起作用,有些脚本存在格式问题,并且保存了下载。
In Advance Thanks. 提前谢谢。

<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>

Download CSV from HTML from end 从末尾从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> 

CSV has no formatting, you can use some phpexcel project like github.com/PHPOffice/PHPExcel. CSV没有格式,您可以使用github.com/PHPOffice/PHPExcel之类的phpexcel项目。 Creating PDF is a option - most known is TCPDF, see tcpdf.org/examples - There are a lot of examples. 创建PDF是一个选项-最著名的是TCPDF,请参见tcpdf.org/examples-有很多示例。

For creating csv you need array and can do as below: 要创建csv,您需要数组,并且可以执行以下操作:

$list = array (
    array('aaa', 'bbb', 'ccc', 'dddd'),
    array('123', '456', '789'),
    array('"aaa"', '"bbb"')
);

$fp = fopen('file.csv', 'w');

foreach ($list as $fields) {
    fputcsv($fp, $fields);
}

fclose($fp);

For exporting html table into pdf you can use mpdf : 要将 html表导出为pdf,可以使用mpdf

Table Example: https://github.com/mpdf/mpdf-examples/blob/development/example05_tables.php 表格范例: https//github.com/mpdf/mpdf-examples/blob/development/example05_tables.php

To direct download file you can do as follows as well: 要直接下载文件,您还可以执行以下操作:

function array_to_csv_download($array, $filename = "export.csv", $delimiter=";") {
    header('Content-Type: application/csv');
    header('Content-Disposition: attachment; filename="'.$filename.'";');

    // open the "output" stream
    // see http://www.php.net/manual/en/wrappers.php.php#refsect2-wrappers.php-unknown-unknown-unknown-descriptioq
    $f = fopen('php://output', 'w');

    foreach ($array as $line) {
        fputcsv($f, $line, $delimiter);
    }
}   

Usage: 用法:

array_to_csv_download(array(
  array(1,2,3,4),
  array(1,2,3,4)),
  "export.csv"
);

Use this code for get table values 使用此代码获取表值

$row = mysqli_fetch_assoc($sql)   //$sql variable used to fetch custom table query

Here creates the csv file and writes the values inside the csv 在这里创建csv文件,并将值写入csv内部

$file = fopen("file.csv","w");    //csv file created here with write mode

foreach ($row as $line){
  fputcsv($file,explode(',',$line));
}

fclose($file);                   //csv file closed here

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM