jQuery Table to CSV export

前端 未结 5 2165
佛祖请我去吃肉
佛祖请我去吃肉 2020-11-27 13:18

I\'m using the jQuery Table to CSV Plugin. I\'ve altered the popup so that it tells the browser to download a CSV file.

It was:

function popup(data)         


        
相关标签:
5条回答
  • 2020-11-27 13:46

    thanks for your question and answer, worked well for me. Here is the (almost identical) ASP.Net version of your solution that I'm using:

    Change table2CSV.js popup function to:

    function popup(data) {
           $("body").append('<form id="exportform" action="CsvExport.ashx" method="post" target="_blank"><input type="hidden" id="exportdata" name="exportdata" /></form>');
           $("#exportdata").val(data);
           $("#exportform").submit().remove();
           return true;
    } 
    

    Noting the change from export.php to a .ashx generic handler.

    The generic handler code:

     public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "application/force-download";
        context.Response.AddHeader("content-disposition", "filename=filename.csv");
    
        context.Response.Write(context.Request.Form["exportdata"]);
    }
    
    0 讨论(0)
  • 2020-11-27 13:50

    I don't recommend to "download" CSV data this way. IE7 only allows up to 2000 characters in the address bar, so chances are high that your file gets truncated.

    0 讨论(0)
  • 2020-11-27 13:56

    I highly recommend using http://datatables.net/extras/tabletools/, it makes is very easy to play around with tables

    0 讨论(0)
  • 2020-11-27 14:04

    Found a solution that works (with help from http://www.topsemtips.com/2008/11/save-html-table-to-excel-using-jquery/):

    I changed the function to:

    function popup(data) {
        $("#main div.inner").append('<form id="exportform" action="export.php" method="post" target="_blank"><input type="hidden" id="exportdata" name="exportdata" /></form>');
        $("#exportdata").val(data);
        $("#exportform").submit().remove();
        return true; 
    }
    

    And created the file export.php:

    <?php
    
        header("Content-type: application/vnd.ms-excel; name='excel'");
        header("Content-Disposition: filename=export.csv");
        header("Pragma: no-cache");
        header("Expires: 0");
    
        print $_REQUEST['exportdata'];
    
    ?>
    

    Update: A more IE7 friendly version:

    <?php
    
        header('Content-Type: application/force-download');
        header('Content-disposition: attachment; filename=filename.csv');
    
        print $_POST['exportdata'];
    
    ?>
    
    0 讨论(0)
  • 2020-11-27 14:09

    Not compatible with all browsers, but no server side needed! Try the code below using JSFiddle and tell us if it is running in your browser.

    $('<a></a>')
        .attr('id','downloadFile')
        .attr('href','data:text/csv;charset=utf8,' + encodeURIComponent(data))
        .attr('download','filename.csv')
        .appendTo('body');
    
    $('#downloadFile').ready(function() {
        $('#downloadFile').get(0).click();
    });
    
    0 讨论(0)
提交回复
热议问题