2013-04-18 6 views
7

Was ich brauchte: Wir haben Wert in der Antwort.Das ist Komma begrenzten Wert. Jetzt möchte ich die Daten von response.d in .csv-Datei exportieren.Wie Daten exportieren CSV mit JQuery oder Javascript

Ich habe diese Funktion geschrieben, um dies durchzuführen. Ich habe die Daten in response.d erhalten, aber nicht in die .csv-Datei exportiert. Geben Sie daher die Lösung für dieses Problem an, um Daten in die .csv-Datei zu exportieren.

function BindSubDivCSV(){ 
    $.ajax({ 
     type: "POST", 
     url: "../../WebCodeService.asmx/ShowTrackSectorDepartureList", 
     data: "{}", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (response) { 
     alert(response.d);//export to csv function needed here 
     }, 
     error: function (data) {} 
    }); 
    return false; 
} 
+1

_so geben Sie die Lösung für dieses Problem_ klingt sehr anspruchsvoll: | – dbf

+0

Hallo dbf, ich fordere meinen Freund nicht nur auf der Suche nach der Lösung meines Problems. Kannst du mir dabei helfen? – Praveen

+0

Wenn Sie Ihre Daten an den Server senden, sollten Sie es dann in asp.net verarbeiten und senden Sie einen Antwortheader mit einem MIME-Typ "Text/CSV" - dies wird es zu einem herunterladbaren Tabellenkalkulation –

Antwort

6

Im Fall haben Sie keine Kontrolle darüber, wie die Server-Seite funktioniert, hier ist eine clientseitige Lösung, die ich in einer anderen SO Frage angeboten habe, für Akzeptanz, die OP noch nicht erledigt: Export to CSV using jQuery and html

Es sind bestimmte Einschränkungen oder Einschränkungen, die Sie in Betracht ziehen müssen, wie ich in meiner Antwort dort drüben erwähnt habe, die mehr Details hat.


Dies ist die gleiche Demo ich angeboten haben: http://jsfiddle.net/terryyounghk/KPEGU/

Und Sie eine ungefähre Vorstellung davon zu geben, was das Skript aussieht.

Was Sie ändern müssen, ist, wie Sie Ihre Daten iterieren (im anderen Fall waren es Tabellenzellen), um eine gültige CSV-Zeichenfolge zu erstellen. Dies sollte trivial sein.

$(document).ready(function() { 

    function exportTableToCSV($table, filename) { 

     var $rows = $table.find('tr:has(td)'), 

      // 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 format 
      colDelim = '","', 
      rowDelim = '"\r\n"', 

      // Grab text from table into CSV formatted string 
      csv = '"' + $rows.map(function (i, row) { 
       var $row = $(row), 
        $cols = $row.find('td'); 

       return $cols.map(function (j, col) { 
        var $col = $(col), 
         text = $col.text(); 

        return text.replace('"', '""'); // escape double quotes 

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

      }).get().join(tmpRowDelim) 
       .split(tmpRowDelim).join(rowDelim) 
       .split(tmpColDelim).join(colDelim) + '"', 

      // Data URI 
      csvData = 'data:application/csv;charset=utf-8,' + encodeURIComponent(csv); 

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

    // This must be a hyperlink 
    $(".export").on('click', function (event) { 
     // CSV 
     exportTableToCSV.apply(this, [$('#dvData>table'), 'export.csv']); 

     // IF CSV, don't do event.preventDefault() or return false 
     // We actually need this to be a typical hyperlink 
    }); 
}); 
+1

Gibt es einen Workaround dafür Arbeit in IE? – n00b

+0

arbeitete wie ein Charme! – cwd

4

den Code oben (von Terry Young) fand ich, dass in Opera würde es ablehnen, der Datei einen Namen zu geben (einfach „Download“ zu nennen) und würde sicher nicht immer.

es um bekomme ich einen binären Blob erstellen musste arbeiten:

var filename = 'file.csv'; 
    var outputCSV = 'entry1,entry2,entry3'; 
    var blobby = new Blob([outputCSV], {type: 'text/plain'}); 

    $(exportLink).attr({ 
       'download' : filename, 
       'href': window.URL.createObjectURL(blobby), 
       'target': '_blank' 
       }); 

    exportLink.click(); 

Beachten Sie auch, dass im laufenden Betrieb die „exportLink“ Variable zu schaffen mit Firefox nicht funktionieren würde, so hatte ich in meinem HTML haben, Datei:

<div> 
     <a id="exportLink"></a> 
    </div> 

die oben verwenden ich das mit Windows 7 64bit und Opera (v22) erfolgreich getestet haben, Firefox (v29.0.1) und Google Chrome (v35.0.1916.153 m).

Um ähnliche Funktionalität (wenn auch auf eine weniger elegante Art) im Internet Explorer zu aktivieren, musste ich Downloadify verwenden.

Verwandte Themen