2014-07-07 13 views
7

में सीएसवी में एचटीएमएल टेबल निर्यात करें मेरे पास इसका उपयोग करके निम्नलिखित फ़ंक्शन है, मैं अपना एचटीएमएल सीएसवी फ़ाइल में निर्यात कर रहा हूं। कुछ दिन/महीने पहले यह Google क्रोम ब्राउज़र में अभी भी ठीक काम कर रहा था (अभी भी एफएफ में इसका काम ठीक है)। अब अचानक यह डेटा को सीएसवी प्रारूप में बदलने के लिए काम करना बंद कर देता है।Google क्रोम ब्राउज़र

जब मैं निर्यात बटन पर क्लिक कर रहा हूँ मैं फ़ाइल डाउनलोड करने में सक्षम हूँ, लेकिन जब मैं एमएस में खोलने की कोशिश कर रहा हूँ उत्कृष्टता/Libre कार्यालय calc अपने उस में से नहीं खुल रही।

मैं यहां तक ​​कि निर्यात किए गए डेटा को भी देख सकता हूं लेकिन यह अलग दिख रहा है।

क्या कोई मुझे बता सकता है कि Google क्रोम ब्राउज़र में मेरे कोड के साथ क्या गलत हो रहा है।

function exportReportTableToCSV($table, filename) { 
    var dumpd=''; 
    var csvData =''; 

    $table.each(function(){ 
      var $rows = $(this).find('tr:has(td)'); 
      var $header = $(this).find('tr:has(th)');     

       tmpColDelim = String.fromCharCode(11), // vertical tab character 
       tmpRowDelim = String.fromCharCode(0), // null character 

       colDelim = '","', 
       rowDelim = '"\r\n"', 

       csv = '"' + $header.map(function (i, head) { 
        var $head = $(head), 
         $cols = $head.find('th'); 

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

         if(text == " ") 
           text = ""; 
         if(text == "PROGRAMS") 
           text = ""; 
         console.log(text); 
         return text.replace('"', '""'); 

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

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

      csv+='\r\n'; 

      csv+= '"' + $rows.map(function (i, row) { 
        var $row = $(row), 
         $cols = $row.find('td'); 

        return $cols.map(function (j, col) { 
         var $col = $(col); 
         var text; 
          if($($(col)).find("input:checkbox").length > 0) 
           text = $($(col)).find("input:checkbox").prop('checked') ? 'Yes' : 'No'; 
          else 
           text = $col.text(); 

          if(text === "") 
          { 
           text = ""; 
          } 

         return text.replace('"', '""'); 

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

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

      dumpd+=csv+"\n\n"; 
     }); 


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

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

उत्तर

20

कुछ और शोध करने के बाद मुझे इसका समाधान मिला।

मैं इस

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

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

var csvData = new Blob([dumpd], { type: 'text/csv' }); //new way 
    var csvUrl = URL.createObjectURL(csvData); 

    $(this) 
    .attr({ 
     'download': filename, 
     'href': csvUrl 
    }); 

करने के लिए बदल दिया है और यह ठीक काम किया। ऐसा लगता है कि क्रोम ने नए संस्करण में कुछ बदल दिया है।

उम्मीद है कि यह दूसरों की मदद कर सकता है।

+0

इसके लिए धन्यवाद; मैं इस अजीब क्रोम अद्वितीय मुद्दे के लिए हमेशा के लिए खोज रहा है। मैं इसे अन्य फ़ाइल प्रकारों के साथ करने का प्रयास कर रहा हूं (txt/excel/pdf के रूप में सहेजें) लेकिन मैं उसी समस्या में भाग रहा हूं जो मैंने सीएसवी के लिए किया था - उस क्रोम में केवल एक्सटेंशन के बिना फ़ाइल को जेनेरिक नाम "डाउनलोड"। क्या आपके पास कोई अन्य स्रोत होगा जो दिखा सकता है कि यह अन्य फ़ाइल प्रकारों के लिए कैसे करें? ऐसा लगता है कि उपलब्ध हर प्लगइन या विधि क्रोम में ठीक से काम नहीं कर रहा है। –

+0

@ केली वे ब्राउज़र के नए संस्करण में डेटा का समर्थन छोड़ते हैं ऐसा लगता है। पीडीएफ के लिए मैंने अभी तक कोशिश नहीं की है लेकिन एक्सेल के लिए .csv फ़ाइल ठीक काम करेगी। मैं पीडीएफ और एक्सेल के बारे में भी शोध करूँगा और अगर मुझे कुछ नया मिलेगा तो आपको अपडेट किया जाएगा :)। – Kalpit

+0

धन्यवाद! यह बहुत सराहना की है। –

संबंधित मुद्दे