2014-04-25 4 views
22

मेरे पास क्लाइंट साइड पर CSV फ़ाइल निर्यात करने के लिए निम्न जावास्क्रिप्ट कोड है। हालांकि जब भी मैं एक बड़ी सरणी निर्यात करने की कोशिश करता हूं तो Google क्रोम क्रैश हो जाता है। क्रोम में डेटा स्ट्रिंग की अनुमति क्या है? क्या यह संभव है कि यह क्रोम में दी गई स्मृति सीमा को मार रहा है? यदि डेटा स्ट्रिंग क्रोम के लिए बहुत लंबा है, तो मैं क्लाइंट साइड पर बड़ी सीएसवी फाइलों को निर्यात करने के बारे में कैसे जाउंगा?जावास्क्रिप्ट: बड़े टेक्स्ट/सीएसवी फ़ाइल को क्रैश करना Google क्रोम

var csvRows = [...]; //Array with 40000 items, each item is 100 characters long. 

var csvString = csvRows.join("\r\n"); 

var a = document.createElement('a'); 

a.href  = 'data:text/csv;charset=utf-8,' + encodeURIComponent(csvString); 
a.target  = '_blank'; 
a.download = 'export.csv'; 

document.body.appendChild(a); 
a.click(); 

(अपेक्षित फ़ाइल आकार 6.4MB के बारे में है)

उत्तर

38

एक ही समस्या थी और Blob का उपयोग कर इसे हल।

उदाहरण के लिए:

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

स्रोत: https://stackoverflow.com/a/24611096/3048937

+0

में मेरे लिए काम किया मैं एक ऐसी ही समस्या है, excelbuilder.js के 'EB.createFile()' समारोह के द्वारा बनाई गई .xlsx फ़ाइल डेटा लिखने के लिए है जो की है। जब तालिका में 8000+ रिकॉर्ड होते हैं, ब्राउज़र क्रैश हो जाता है। मैं इसे एक ब्लॉब के रूप में सहेजने की कोशिश कर रहा हूं। हालांकि, फ़ाइल में जो लिखा गया है वह एक्सेल फ़ाइल डेटा की बजाय बेस 64 स्ट्रिंग के रूप में सामने आता है। मैंने विभिन्न प्रकार के तारों की कोशिश की है। क्या तुम्हारे पास कोई विचार है? – gm2008

3

मैं सीएसवी डाउनलोड करने के लिए समारोह निम्नलिखित का इस्तेमाल किया। आईई/फ़ायरफ़ॉक्स/क्रोम

function downloadFile(data, fileName) { 
     var csvData = data; 
     var blob = new Blob([ csvData ], { 
      type : "application/csv;charset=utf-8;" 
     }); 

     if (window.navigator.msSaveBlob) { 
      // FOR IE BROWSER 
      navigator.msSaveBlob(blob, fileName); 
     } else { 
      // FOR OTHER BROWSERS 
      var link = document.createElement("a"); 
      var csvUrl = URL.createObjectURL(blob); 
      link.href = csvUrl; 
      link.style = "visibility:hidden"; 
      link.download = fileName; 
      document.body.appendChild(link); 
      link.click(); 
      document.body.removeChild(link); 
     } 
} 
+0

क्या यह सफारी के साथ संगत है? @ गणेश –

+0

सफारी के साथ इसका परीक्षण नहीं किया है। – Ganesh

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