2016-11-08 3 views
8

मैं excel फ़ाइल (.xlsx प्रारूप में) बना सकते हैं और क्लाइंट के प्रयोग द्वारा डाउनलोड के लिए यह उपलब्ध कराना चाहते हैं साइड जावास्क्रिप्ट। मैं js-xlsx लाइब्रेरी का उपयोग कर नमूना फ़ाइल बनाने में सक्षम था। लेकिन मैं इसे किसी भी शैलियों को लागू करने में सक्षम नहीं हूं। पृष्ठभूमि रंग शीर्षलेख पर, बोल्ड फ़ॉन्ट हेडर के लिए और पाठ कोशिकाओं के लिए लपेटकर सहित कम से कम कुछ बुनियादी शैलियों की आवश्यकता है।एक एक्सेल क्लाइंट पक्ष जावास्क्रिप्ट का उपयोग कुछ शैलियों के साथ फ़ाइल बनाने (संभव js-xlsx का उपयोग कर पुस्तकालय अगर)

जेएस-xlsx लाइब्रेरी प्रलेखन का कहना है कि हम Cell Object का उपयोग करके शैलियों को दे सकते हैं।

मैंने सेल ऑब्जेक्ट का उपयोग करके शैलियों को देने का प्रयास किया लेकिन यह डाउनलोड की गई .xlsx फ़ाइल में प्रतिबिंबित नहीं हो रहा है। मैंने एक .xlsx फ़ाइल पढ़ने और XLSX.write() फ़ंक्शन का उपयोग करके उसी फ़ाइल को वापस पढ़ने का प्रयास किया। लेकिन यह बिना किसी शैलियों के एक्सेल फ़ाइल को वापस देता है। आदर्श रूप से मैं डाउनलोड की गई फ़ाइल की अपलोड की गई फाइलों की समान शैलियों की अपेक्षा करता हूं। पुनर्निर्मित फ़ाइल में कोई फ़ॉन्ट रंग या पृष्ठभूमि रंग लागू नहीं किए गए थे। मैं डाउनलोड की गई फ़ाइलों का परीक्षण करने के लिए एक्सेल 2013 का उपयोग करता हूं।

कृपया अपलोड करने से पहले और बाद में एक्सेल स्क्रीनशॉट के नीचे खोजें।

मूल फ़ाइल

enter image description here

डाउनलोड की गई फ़ाइल

enter image description here

कोड नीचे दी गई है।

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> 
<script type="text/javascript" src="xlsx.core.min.js"></script> 
<script type="text/javascript" src="Blob.js"></script> 
<script type="text/javascript" src="FileSaver.js"></script> 

<script> 

function s2ab(s) { 
    var buf = new ArrayBuffer(s.length); 
    var view = new Uint8Array(buf); 
    for (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF; 
    return buf; 
} 

/* set up XMLHttpRequest */ 
var url = "template-sample.xlsx"; 
var oReq = new XMLHttpRequest(); 
oReq.open("GET", url, true); 
oReq.responseType = "arraybuffer"; 

oReq.onload = function(e) { 
    var arraybuffer = oReq.response; 

    /* convert data to binary string */ 
    var data = new Uint8Array(arraybuffer); 
    var arr = new Array(); 
    for(var i = 0; i != data.length; ++i) arr[i] = String.fromCharCode(data[i]); 
    var bstr = arr.join(""); 

    /* Call XLSX */ 
    var workbook = XLSX.read(bstr, {type:"binary", cellStyles:true}); 

    console.log("read workbook"); 
    console.log(workbook); 
    /* DO SOMETHING WITH workbook HERE */ 
    var wbout = XLSX.write(workbook, {bookType:'xlsx', bookSST:true, type: 'binary', cellStyles: true}); 
    saveAs(new Blob([s2ab(wbout)],{type:"application/octet-stream"}), "template-download.xlsx"); 

} 

function read(){ 
    oReq.send();  
} 


</script> 


</head> 
<body> 
    <button onclick="read()">save xlsx</button> 
</body></html> 

नमूना कोड here से लिया गया था।

जो मैं आगे देखता हूं वह या तो जेएस-xlsx लाइब्रेरी या अन्य लाइब्रेरी का उपयोग करके कोशिकाओं को शैलियों को देने का विकल्प है जो इस कार्यक्षमता को प्रदान करता है। मुझे exceljs नामक लाइब्रेरी मिली, लेकिन इसे समर्थन देने के लिए नोड जेएस की आवश्यकता है। मैं पूरी तरह क्लाइंट साइड आधारित समाधान की तलाश में हूं। इसका उपयोग कॉर्डोवा आधारित टैबलेट और डेस्कटॉप एप्लिकेशन के लिए किया जाना है।

उत्तर

10

कुछ शोध के बाद मैं अपने स्वयं के प्रश्न का समाधान ढूंढ पाया। शैलियों को देने के लिए मुझे xlsx-style नामक एक नई लाइब्रेरी मिली। xlsx-style जेनरेट एक्सेल फ़ाइल को शैलियों को देने के लिए जेएस-xlsx के शीर्ष पर बनाया गया है। सेल ऑब्जेक्ट के अंदर एक नई विशेषता का उपयोग कर कोशिकाओं को शैलियों को दिया जा सकता है।

स्पष्टीकरण npm xlsx-style पृष्ठ पर उपलब्ध है।

स्टाइल को प्रत्येक सेल से जुड़े स्टाइल ऑब्जेक्ट का उपयोग करके दिया जाता है। इस शैली वस्तु का उपयोग कर फ़ॉन्ट, रंग, संरेखण आदि दिया जा सकता है।

मैंने github page में एक न्यूनतम डेमो जोड़ा है। नमूना कोड इस github repository पर उपलब्ध है।

आप नीचे जेनरेट किए गए एक्सेल पृष्ठ का स्क्रीनशॉट पा सकते हैं। enter image description here

+0

मैं उसी समाधान की तलाश में था। क्या आप नमूना कोड के साथ अपडेट कर सकते हैं कि आपने इसे 'xlsx-style' का उपयोग करके कैसे किया। मेरी आवश्यकता है कि कुछ मूल शैली के साथ .xlsx फ़ाइल में डेटा लिखें। किसी भी मदद की सराहना करते हैं। – gihan

+0

क्या आप कृपया मुझे बता सकते हैं कि सेल ऑब्जेक्ट में स्टाइल ऑब्जेक्ट को कैसे परिभाषित किया गया है। मैंने इस तरह से कोशिश की लेकिन काम नहीं किया।'वर सेल = {वी: डेटा [आर] [सी], एस: {बीजी रंग: "# ई 1697 बी"}} ; – gihan

+0

मैं जल्द ही एक कार्य कोड अपडेट करने का प्रयास करूंगा। –

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