XML को Excel में बदलें
XML एक्सपोर्ट, फ़ीड और डेटा फ़ाइलों को फ़ॉर्मैट की हुई Excel शीट में बदलें — दोहराए जाने वाले रिकॉर्ड आपके लिए पहचाने जाते हैं, एट्रिब्यूट और नेस्टेड एलिमेंट कॉलम में लगते हैं, और कुछ भी स्टोर नहीं किया जाता।
- कभी स्टोर नहीं होती
- न कतार, न इंतज़ार
- साइनअप नहीं, वॉटरमार्क नहीं
यह कैसे काम करता है
XML जोड़ें
कोई .xml फ़ाइल यहां छोड़ें या XML पेस्ट करें। Excel की अपनी XML Spreadsheet 2003 फ़ाइलें भी चलती हैं।
रिकॉर्ड चुनें
दोहराया जाने वाला एलिमेंट — product, item, row — आपके लिए चुन लिया जाता है, फ़ाइल की बाक़ी सभी टेबल की सूची और लाइव प्रीव्यू के साथ।
डाउनलोड करें
एक .xlsx, जिसमें हर कॉलम के नंबर और तारीख़ें सही टाइप में हों और हेडर पंक्ति बोल्ड और फ़िल्टर करने लायक हो।
ट्री में से पंक्तियां ढूंढना
XML में टेबल जैसी कोई चीज़ होती ही नहीं, इसलिए सबसे पहले यह पहचानना ज़रूरी है कि कौन-से एलिमेंट रिकॉर्ड हैं। इसका भरोसेमंद संकेत है दोहराव: जिस पैरेंट एलिमेंट में एक ही नाम के कई चाइल्ड हों, उसका मतलब लगभग हमेशा रिकॉर्ड की सूची होता है, और उन चाइल्ड के अपने चाइल्ड एलिमेंट और एट्रिब्यूट कॉलम बन जाते हैं। यह तरीक़ा ज़्यादातर डेटा XML पर काम करता है — एक्सपोर्ट, फ़ीड, API रिस्पॉन्स, कॉन्फ़िगरेशन डंप — क्योंकि वे सब एक ही ढंग से बने होते हैं।
एट्रिब्यूट और चाइल्ड एलिमेंट, दोनों कॉलम में बदले जाते हैं, और यह ज़रूरी है क्योंकि XML एक ही बात कहने के दो तरीक़े देता है और अलग-अलग सिस्टम अलग-अलग तरीक़ा चुनते हैं। एक एक्सपोर्ट id="42" को एट्रिब्यूट के रूप में लिखता है; दूसरा <id>42</id> को एलिमेंट के रूप में; तीसरा एक ही डॉक्यूमेंट में दोनों करता है। ग्रिड को इस फ़र्क़ से कोई मतलब नहीं, और आपको भी नहीं होना चाहिए, इसलिए दोनों कॉलम के रूप में आते हैं, और एट्रिब्यूट पर निशान लगा दिया जाता है ताकि दोनों रूपों में आने वाला एक ही नाम आपस में न टकराए।
एक लेवल से ज़्यादा गहरी नेस्टिंग को एलिमेंट के नाम जोड़कर फ़्लैट किया जाता है, ठीक नेस्टेड JSON की तरह। जहां किसी रिकॉर्ड में दोहराया जाने वाला चाइल्ड हो — एक ऑर्डर के अंदर तीन ऑर्डर लाइनें — वहां ग्रिड उसे आसपास की हर चीज़ दोहराए बिना पंक्तियों के रूप में नहीं दिखा सकता, इसलिए दोहराई गई वैल्यू उसी सेल में रखी जाती हैं। कॉलम के नामों से नेमस्पेस हटा दिए जाते हैं, क्योंकि स्प्रेडशीट में ns2:customerName नाम का कॉलम किसी के काम का नहीं, जबकि वैल्यू ख़ुद जस की तस रहती हैं।
गद्य वाले XML में ढूंढने लायक कोई टेबल नहीं होती और वह बुरी तरह बदलता है। XHTML पेज, DocBook लेख, ePub का कोई अध्याय या SVG ड्रॉइंग डेटासेट नहीं, डॉक्यूमेंट है: उसकी बनावट जान-बूझकर नेस्टेड और बेतरतीब होती है, और पंक्तियां बनाने के लिए कोई दोहराया जाने वाला रिकॉर्ड नहीं होता। कन्वर्ज़न कुछ न कुछ बना देगा, पर वह काम का नहीं होगा। यह पेज डेटा XML के लिए है, और यह फ़र्क़ साफ़ समझ लेना किसी भी तरह की ट्यूनिंग से ज़्यादा समय बचाता है।
जब आपको कुछ और चाहिए
जब आपको बनावट पता हो, तो उसका अंदाज़ा लगाने के बजाय उसे सोच-समझकर निकालें। xmlstarlet sel -t -m "//order" -v "@id" -o "," -v "customer" -n data.xml एक XPath एक्सप्रेशन से ठीक वही फ़ील्ड निकालता है जो आपको चाहिए, और xq यही काम jq जैसे सिंटैक्स से करता है। यही फ़र्क़ है उस कन्वर्ज़न में जो संयोग से चल जाए, और उसमें जिसे आप किसी पाइपलाइन में लगा सकें।
बहुत बड़ी फ़ाइलों के लिए यहां का पूरा तरीक़ा ही ग़लत है: पूरा डॉक्यूमेंट एक साथ मेमोरी में पार्स होता है, और ट्री के रूप में पार्स किया गया XML आम तौर पर फ़ाइल के साइज़ से कई गुना जगह लेता है। स्ट्रीमिंग पार्सर — Python का iterparse, या किसी भी भाषा में SAX — कई गीगाबाइट के डॉक्यूमेंट को एक जैसी मेमोरी में पढ़ लेते हैं, और कुछ सौ मेगाबाइट से ऊपर यही अकेला व्यावहारिक तरीक़ा है।
अक्सर पूछे जाने वाले सवाल
इसे कैसे पता चलता है कि XML का कौन-सा हिस्सा टेबल है?
रिकॉर्ड वे एलिमेंट हैं जो एक ही पैरेंट के नीचे बार-बार आते हैं — किसी <catalog> में हर <book>, किसी RSS चैनल में हर <item>। हर समूह को इस आधार पर अंक दिए जाते हैं कि उसमें कितने रिकॉर्ड और फ़ील्ड हैं, सबसे अच्छा चुन लिया जाता है, और बाक़ी बस एक क्लिक दूर रहते हैं।
एट्रिब्यूट और नेस्टेड एलिमेंट का क्या होता है?
हर एक कॉलम बन जाता है, जिसका नाम उसके पाथ से रखा जाता है: id एट्रिब्यूट id बनता है, <author><name> author/name बनता है, और <price currency="EUR"> से price और price/@currency मिलते हैं। जो फ़ील्ड एक ही रिकॉर्ड के अंदर दोहराया जाता है, वह एक सेल में जोड़ दिया जाता है या नंबर वाले कई कॉलम में फैला दिया जाता है।
क्या यह Excel XML Spreadsheet 2003 फ़ाइलें खोल सकता है?
हां। ऐसी फ़ाइलें पहचानी जाती हैं और शीट-दर-शीट बदली जाती हैं, उनके नंबर, तारीख़ें और टेक्स्ट जस के तस रहते हैं।
अगर फ़ाइल में कई टेबल हों — ऑर्डर और उनके आइटम?
हर दोहराया जाने वाला समूह अलग से दिखाया जाता है। नेस्टेड टेबल, जैसे हर ऑर्डर के अंदर के आइटम, में एक कॉलम होता है जो उसके पैरेंट रिकॉर्ड की पहचान बताता है, ताकि दोनों शीट का मिलान किया जा सके।
क्या मेरी फ़ाइल कहीं स्टोर होती है?
नहीं। XML यहीं पार्स होता है और वर्कबुक यहीं लिखी जाती है, कुछ भी स्टोर नहीं किया जाता।
क्या किसी अनजान सोर्स का XML खोलना सुरक्षित है?
हां। फ़ाइल आपके ब्राउज़र के XML पार्सर से पढ़ी जाती है, जो कभी बाहरी एंटिटी या DTD लोड नहीं करता और फ़ाइल के अंदर का कुछ भी चला नहीं सकता।
ध्यान दें: जो डॉक्यूमेंट डेटा के बजाय गद्य हैं — XHTML पेज, DocBook लेख — उनमें ढूंढने लायक कोई टेबल नहीं होती और वे ठीक से नहीं बदलते। लगभग 100 MB से बड़ी फ़ाइलें आपके ब्राउज़र की मेमोरी से ज़्यादा हो सकती हैं।
यह टूल अपनी वेबसाइट पर लगाएं
किसी भी ब्लॉग, क्लास पेज या हेल्प आर्टिकल के लिए मुफ़्त। एक स्निपेट पेस्ट करें और आपके विज़िटर इसे सीधे आपके पेज पर इस्तेमाल कर सकेंगे।
और स्प्रेडशीट टूल्स
Excel को XML में बदलें
पंक्तियों से साफ़, सही बना XML
JSON को CSV में बदलें
नेस्टेड JSON को साफ़ कॉलम में
CSV को Excel में बदलें
CSV से XLSX, असली नंबर और तारीख़ों के साथ
CSV को JSON में बदलें
CSV से टाइप वाला, नेस्टेड JSON
Excel को CSV में बदलें
कोई भी शीट CSV में, आपकी ज़रूरत की एन्कोडिंग में
ODS को XLSX में बदलें
LibreOffice स्प्रेडशीट को Excel वर्कबुक में