2015-06-16 17 views
21

ठीक है तो मैं यह वास्तव में अच्छी तरह से प्रलेखित node_modulejs-xlsxपार्स XLSX और

प्रश्न बुलाया पाया json बनाएँ: मैं उत्पादन json के लिए एक xlsx कैसे पार्स कर सकते हैं? json

enter image description here

अंत में इस तरह दिखना चाहिए:

[ 
    { 
    "id": 1, 
    "Headline": "Team: Sally Pearson", 
    "Location": "Austrailia", 
    "BodyText": "...", 
    "Media: "..." 
    }, 
    { 
    "id": 2, 
    "Headline": "Team: Rebeca Andrade", 
    "Location": "Brazil", 
    "BodyText": "...", 
    "Media: "..." 
    } 
] 

index.js:

if(typeof require !== 'undefined') { 
    console.log('hey'); 
    XLSX = require('xlsx'); 
} 
var workbook = XLSX.readFile('./assets/visa.xlsx'); 
var sheet_name_list = workbook.SheetNames; 
sheet_name_list.forEach(function(y) { /* iterate through sheets */ 
    var worksheet = workbook.Sheets[y]; 
    for (z in worksheet) { 
    /* all keys that do not begin with "!" correspond to cell addresses */ 
    if(z[0] === '!') continue; 
    // console.log(y + "!" + z + "=" + JSON.stringify(worksheet[z].v)); 

    } 

}); 
XLSX.writeFile(workbook, 'out.xlsx'); 

यहाँ एक्सेल शीट कैसा दिखाई देता है है

+0

उपयोग कर सकते हैं आप को प्राप्त करने के प्रयास कर रहे हैं क्या? यदि आप बस जेसन संरचना में एक्सेल शीट्स साझा करना चाहते हैं, या बस आसान साझा करने के लिए एक्सेल शीट क्लाउड-आधारित बनाएं, तो ऐसे कई काम हैं जो ऐसी चीजें करते हैं। उदाहरण के लिए https://www.ipushpull.com – Tom

+0

लागत धन। और मुझे पता है कि यह lib हाथ में आसान काम करेगा –

+0

परीक्षण संस्करण भी है, लेकिन मूल रूप से आपको भुगतान करना होगा यदि आप कच्चे पुस्तकालय की तुलना में कुछ और उपयोगकर्ता के अनुकूल उपयोग करना चाहते हैं। आपके प्रश्न से यह स्पष्ट नहीं है कि आप क्या हासिल करने की कोशिश कर रहे हैं या समस्या क्या है। क्या आप अंतिम जेसन में पहली पंक्ति जोड़ने की कोशिश कर रहे हैं? – Tom

उत्तर

20

उन्नत संस्करण का "जोश Marinacci" जवाब है, यह जेड स्तंभ (अर्थात AA1) परे पढ़ा जाएगा।

var XLSX = require('xlsx'); 
var workbook = XLSX.readFile('test.xlsx'); 
var sheet_name_list = workbook.SheetNames; 
sheet_name_list.forEach(function(y) { 
    var worksheet = workbook.Sheets[y]; 
    var headers = {}; 
    var data = []; 
    for(z in worksheet) { 
     if(z[0] === '!') continue; 
     //parse out the column, row, and value 
     var tt = 0; 
     for (var i = 0; i < z.length; i++) { 
      if (!isNaN(z[i])) { 
       tt = i; 
       break; 
      } 
     }; 
     var col = z.substring(0,tt); 
     var row = parseInt(z.substring(tt)); 
     var value = worksheet[z].v; 

     //store header names 
     if(row == 1 && value) { 
      headers[col] = value; 
      continue; 
     } 

     if(!data[row]) data[row]={}; 
     data[row][headers[col]] = value; 
    } 
    //drop those first two rows which are empty 
    data.shift(); 
    data.shift(); 
    console.log(data); 
}); 
19

मुझे लगता है कि यह कोड wh करेगा आप चाहते हैं यह शीर्ष पंक्ति को हेडर के सेट के रूप में संग्रहीत करता है, फिर बाकी को डेटा ऑब्जेक्ट में संग्रहीत करता है जिसे आप डिस्क पर JSON के रूप में लिख सकते हैं।

var XLSX = require('xlsx'); 
var workbook = XLSX.readFile('test.xlsx'); 
var sheet_name_list = workbook.SheetNames; 
sheet_name_list.forEach(function(y) { 
    var worksheet = workbook.Sheets[y]; 
    var headers = {}; 
    var data = []; 
    for(z in worksheet) { 
     if(z[0] === '!') continue; 
     //parse out the column, row, and value 
     var col = z.substring(0,1); 
     var row = parseInt(z.substring(1)); 
     var value = worksheet[z].v; 

     //store header names 
     if(row == 1) { 
      headers[col] = value; 
      continue; 
     } 

     if(!data[row]) data[row]={}; 
     data[row][headers[col]] = value; 
    } 
    //drop those first two rows which are empty 
    data.shift(); 
    data.shift(); 
    console.log(data); 
}); 

प्रिंट बाहर

[ { id: 1, 
    headline: 'team: sally pearson', 
    location: 'Australia', 
    'body text': 'majority have…', 
    media: 'http://www.youtube.com/foo' }, 
    { id: 2, 
    headline: 'Team: rebecca', 
    location: 'Brazil', 
    'body text': 'it is a long established…', 
    media: 'http://s2.image.foo/' } ] 
+0

मीठा मैं आज रात को आजमाउंगा –

+0

आप जोश आदमी हैं! मैंने फाइल सहेजने के लिए कुछ संपादन किए हैं। अपने बक्षीस का आनंद लें –

28

तुम भी

var XLSX = require('xlsx'); 
var workbook = XLSX.readFile('Master.xlsx'); 
var sheet_name_list = workbook.SheetNames; 
console.log(XLSX.utils.sheet_to_json(workbook.Sheets[sheet_name_list[0]])) 
+1

बिल्कुल सही, सुरुचिपूर्ण और छोटा! – user3139868

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