Soru jQuery Tablo CSV dışa aktarma


CSV Eklentisi için jQuery Tablosu kullanıyorum. Açılır pencereyi değiştirdim, böylece tarayıcıya bir CSV dosyası indirmesini söyler.

Öyleydi:

function popup(data) {
  var generator = window.open('', 'csv', 'height=400,width=600'); 
  generator.document.write('<html><head><title>CSV</title>'); 
  generator.document.write('</head><body >'); 
  generator.document.write('<textArea cols=70 rows=15 wrap="off" >'); 
  generator.document.write(data); 
  generator.document.write('</textArea>'); 
  generator.document.write('</body></html>'); 
  generator.document.close();
  return true; 
}

Onu değiştirdim:

function popup(data) {
  window.location='data:text/csv;charset=utf8,' + encodeURIComponent(data);
  return true; 
}

Çoğunlukla çalışır. E-tablo yazılımınızı bulmanızı ve kendi dosya adınızı oluşturmanızı gerektirir ... çünkü garip bir dosya adı oluşturur (Örnek: 14YuskG_.csv.part).

Bunu nasıl geliştireceğinize dair herhangi bir öneriniz var mı?


30
2018-05-28 14:10


Menşei


CSV Eklentisi için jQuery Tablosu: kunalbabre.com/projects/table2CSV.phpteşekkürler Kunal Babre - timborden


Cevaplar:


Çalışan bir çözüm buldum. http://www.topsemtips.com/2008/11/save-html-table-to-excel-using-jquery/):

Fonksiyonu değiştirdim:

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

Ve export.php dosyasını oluşturdu:

<?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'];

?>

Güncelleştirme: Daha fazla IE7 dostu sürümü:

<?php

    header('Content-Type: application/force-download');
    header('Content-disposition: attachment; filename=filename.csv');

    print $_POST['exportdata'];

?>

20
2018-05-28 15:51



+1 Benim için çalıştı. Yine de, ben $ ("body") kullanarak sona erdi. ([Enter-form-here]) ekle; - Eddie
Buna rağmen tüm verilerin bir sunucu gidiş-dönüş gerektirdiğini not edin. İstemcide çok fazla veri varsa, bu optimal değildir. - desau
Bu açıkça kötü bir uygulamadır. Temiz olmayan istemci tarafı verilerini kullanacaksanız, en azından sunucuyu bu şekilde dahil etmekten kaçınmalısınız. Yani ya sunucudan veri üretin ve eko yapın ya da doğrudan js ile yapın. - Morg.
@Morg. cevabıma bir bak stackoverflow.com/a/19988796/439171 Ciddi taraf yok! Ama tüm brwosers ile tam uyumlu değil. - Italo Borssatto
@italo teşekkürler Ben zaten bunu denedim ama gerçekten subpar ve bu harika çalışmıyor. Her şeye rağmen flaş yapan bir şey buldum (jQuery dataTables tableTools için temel). - Morg.


Sorunuz ve cevabınız için teşekkürler, benim için iyi çalıştı. İşte kullandığınız çözümün (hemen hemen aynı) ASP.Net sürümü:

Table2CSV.js açılır penceresini şu şekilde değiştirin:

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

Export.php dosyasındaki bir .ashx jenerik işleyiciye yapılan değişikliği not etmek.

Genel işleyici kodu:

 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"]);
}

7
2017-08-03 11:14





Bu şekilde "indirme" CSV verilerini tavsiye etmem. IE7 sadece adres çubuğunda 2000 karaktere kadar izin verir, bu yüzden dosyanız kesilirse yüksek olur.


6
2018-05-28 15:00





Tüm tarayıcılarla uyumlu değil, sunucu tarafı gerekmez! Aşağıdaki kodu deneyin JSFiddle kullanarak ve tarayıcınızda çalışıyorsa bize bildirin.

$('<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();
});

1
2017-11-14 21:29





Kullanarak tavsiye ederim http://datatables.net/extras/tabletools/masalarla oynamak çok kolay


0
2018-03-09 20:40