एक्सेल फ़ाइल की तुलना में एक ही डेटा टेक्स्ट फ़ाइल में अधिक स्थान क्यों लेता है?


59

मेरे पास डेटा की लगभग 100000 पंक्तियाँ हैं। अगर मैं इस डेटा को टेक्स्ट फाइल फॉर्मेट में स्टोर करता हूं, तो इसे एक्सेल फाइल फॉर्मेट में स्टोर करने से ज्यादा जगह मिलती है। ऐसा क्यों है?

जवाबों:


118

आधुनिक एक्सेल द्वारा उपयोग किया जाने वाला xlsxप्रारूप वास्तव में एक संकुचित प्रारूप है। यह एक ज़िप संग्रह है जिसमें एक निश्चित संरचना में पाठ (XML) फ़ाइलें हैं।

यदि आप अपने सादे पाठ फ़ाइल को एक समान ज़िप संपीड़न उपकरण के साथ संपीड़ित करते हैं, तो आपको समान फ़ाइल आकार प्राप्त करना चाहिए।

इसके अतिरिक्त, जैसा कि टिप्पणियों में ब्रैडली उफ़नर और मॉर्गन ने उल्लेख किया है , एक्सेल समान तारों को काट देगा और केवल उनकी एक प्रति संग्रहीत करेगा। मुझे इस तरह की विधि के सटीक लाभों के बारे में निश्चित नहीं है, और यह आपके डेटा सेट पर निर्भर करेगा, लेकिन सरल ज़िप संपीड़न शायद आपको वहां सबसे अधिक मिलेगा। 1


9.1.3 शारीरिक पैकेज

प्रत्येक कार्यालय ओपन एक्सएमएल दस्तावेज़ को ज़िप संग्रह के रूप में लागू किया जाता है।

- ECMA-376-1: 2016


1 मेरा अनुमान है कि जब आप कई वर्कशीट करते हैं तो यह कटौती सबसे प्रभावी होती है, क्योंकि ज़िप कंप्रेशन प्रत्येक फाइल को आर्काइव में प्रत्येक फाइल पर स्वतंत्र रूप से लागू होता है और केवल एक समय में डेटा के सीमित वर्गों में - एक ही फाइल में एक साथ सभी स्ट्रिंग्स को संग्रहीत करके, बाद के संपीड़न के लिए कुछ लाभ होना चाहिए। अधिक व्यावहारिक रूप से, यदि आपका सादा पाठ प्रारूप किसी भी फ़ाइल में वैसे भी है तो शायद थोड़ा अंतर होगा।


2
यह भी खूब रही! यह बहुत अच्छी अंतर्दृष्टि देता है कि एक्सेल फाइल कैसे संभाले जाते हैं। धन्यवाद!
डोमिनिक

3
@ डॉमिनिक यदि आप अधिक जानना चाहते हैं, तो आप इसे अनज़िप करके (जैसे 7zip के साथ, या नाम बदलकर समाप्त होता है .zip) एक के साथ एक के साथ खेल सकते हैं । युक्ति भी उपलब्ध है, लेकिन यह सूखे पढ़ने के लिए बनाता है।
बॉब

3
मुझे लगता है कि एक्सेल भी एक स्ट्रिंग शब्दकोश का उपयोग करता है, जहां पाठ के बिट्स जो कोशिकाओं के बीच समान होते हैं, उन्हें केवल एक बार संग्रहीत किए जाने के दौरान पुन: उपयोग किया जा सकता है।
ब्रैडली उफ़नर

1
Apache ooxml लाइब्रेरी द्वारा उजागर एपीआई के आधार पर, एक साझा स्ट्रिंग्स शब्दकोश कम से कम संभावित है।
मुर्गेन

2
साझा स्ट्रिंग्स एक्सेल की एक विशेषता थी, जब उसने XLS (कोई x) फाइलें नहीं लिखीं, जो एक रिकॉर्ड-उन्मुख प्रारूप था, जिसे OLE कंटेनर में BIFF कहा जाता था। यदि आप XLSX के साथ पुराने XLS स्पेक्स की तुलना करते हैं, तो आप देखेंगे कि XLSX BIFF का केवल एक असेंबल xmlified ज़िप्ड संस्करण है। इसलिए आधारभूत रूप से MS ने XLSX के लिए साझा स्ट्रिंग फ़ीचर का आविष्कार नहीं किया, जहाँ यह संपीड़न के कारण बहुत मायने नहीं रखता; वे बस XLSX में XLS को चालू करने का सबसे आसान मार्ग बन गए।
गुंतराम ब्लोह

2

दिया गया उत्तर सही है, यह आपके डेटा को एक्सएमएल के रूप में संग्रहीत करने के कारण है। यह इस कारण से भी है, कि आपके डेटा को कुशलता से छाँटने से फ़ाइल का आकार भी कम हो जाएगा। इसे स्वयं परखें - मान लें कि आपके पास डेटा है

A            B                              C
John         Smith-Johnson-Williamson       12345
Sally        Smith-Johnson-Williamson       67890
John         Williams                       34567

यदि आप केवल C (सभी या लगभग सभी विशिष्ट मानों वाला एक कॉलम) को छाँटते हैं, तो B के समरूप मान आसन्न नहीं होंगे। एक्सेल के xml में ऐसा दिखता है:

<12345><John><Smith-Johnson-Williamson>
<34567><John><Williams>
<67890><Sally><Smith-Johnson-Williamson>

यदि आप बी (सामान्य मूल्यों के साथ एक कॉलम) को क्रमबद्ध करते हैं, तो समान मूल्य आसन्न हैं। एक्सेल के xml में ऐसा दिखता है:

<Smith-Johnson-Williamson><John><12345>
  <Sally><67890>
<Williams><John><34567>

क्योंकि वह लंबी स्ट्रिंग समान और आसन्न है, एक्सेल जानता है कि यह उन्हें एक साथ पैक कर सकता है, जब लोग सूची लिखते हैं, और उपरोक्त पंक्ति के कुछ भाग को दोहराने के लिए, वे एक ही चीज़ को फिर से लिखने के बजाय उद्धरण टाइप करते हैं। मुझे अपनी जांच में साझा-स्ट्रिंग शब्दकोश का कोई सबूत नहीं मिला - बस दोहराया क्षेत्र मूल्य के स्थान पर यह इंडेंटेशन।

मेरे पास केवल 11 राज्यों में 250,000 ग्राहकों की मेलिंग सूची थी, और प्रत्येक रिकॉर्ड पर एक क्षेत्र था जो उन्हें मिलने वाले प्रस्ताव की पहचान करने वाले दो तारों में से एक था। हमारे कर्मचारी किसी कारणवश लोगों को उनके सड़क के पते पर बात करते हुए देखने के आदी थे, इसलिए इसे सड़क नंबर कॉलम, फिर सड़क का नाम, शहर, इत्यादि पर सॉर्ट किया गया ... जब मैंने पहले प्रस्ताव का सहारा लिया, तब राज्य, ज़िप कोड, शहर, सड़क का नाम, सड़क संख्या और अंत में पता-पंक्ति -2, फ़ाइल का आकार अविश्वसनीय रूप से कम हो गया था। मैंने फ़ाइल पर अनपैक्ड एक्सएमएल की जांच की, जो चल रहा था, उसे देखने के लिए हर तरह से हल किया और ऊपर जो मैंने घटाया है। यदि 5 वर्णों से अधिक वाले कई फ़ील्ड हैं, लेकिन मान एक सीमित सेट के हैं (कहते हैं, 'रिज़ॉल्यूशन', 'अस्वीकृत', 'स्वीकृत', आदि जैसे टिकट डिस्पोज़),


हैलो कम्पैनियनक्यूब, यह अत्यंत भयानक ज्ञान है। !!! बहुत बहुत धन्यवाद।
user734178

-5

यदि आपके पास 3.14159265359 जैसी संख्या है, तो आपको इसे टेक्स्ट फ़ाइल में संग्रहीत करने के लिए 13 बाइट्स की आवश्यकता है; यदि आप इस संख्या को फ्लोट के रूप में संग्रहीत करते हैं, तो आपको केवल 4 बाइट्स की आवश्यकता होगी।


19
हालांकि यह xls(BIFF) के मामले में हो सकता है , मुझे नहीं लगता xlsxकि यह ऐसा करता है। xlsxXML फ़ाइलों में सभी डेटा संग्रहीत करता है, जो अंकों के द्विआधारी एन्कोडिंग प्रदर्शन नहीं करते हैं - वे पाठ स्ट्रिंग के रूप में परिवर्तित और संग्रहीत होते हैं। मैं अभी भी विनिर्देश के संबंधित अनुभाग का शिकार करने की कोशिश कर रहा हूं, लेकिन मेरा अनुभवजन्य परीक्षण (यानी एक सहेजा गया दस्तावेज़ निकाल रहा है) दिखाता है कि 1.123एक्सएमएल में 5 वर्ण स्ट्रिंग के रूप में संग्रहीत है।
बॉब

14
ECMA-376-1: 2016 § 18.3.1.4 c(सेल) से पता चलता है कि कोशिकाएं vटैग में अपना डेटा संग्रहीत करती हैं , जैसा कि ECMA-376-1: 2016v में परिभाषित किया गया है, 18.3.1.96 (सेल वैल्यू) जहां वे कहते हैं कि इस तत्व के लिए संभावित मान ST_Xstring सरल प्रकार (.922.9.2.19) द्वारा परिभाषित किया गया है। - वे ऐसे उदाहरण प्रदान करते हैं, <v>28086.3541666667</v>जहां डेटा को स्पष्ट रूप से एक स्ट्रिंग के रूप में संग्रहीत किया जाता है।
बॉब

4
@gerrit दुर्भाग्य से प्रोग्राम के भीतर फ्लोट्स के रूप में एक्सेल संख्या की व्याख्या करता है , जिससे फोन नंबर पिछली कुछ अंकों को छोड़ने जैसी दिलचस्प समस्याओं का कारण बनता है । यह सिर्फ उन्हें डिस्क के रूप में तैरने (अब?) के लिए नहीं बचाता है।
बॉब

2
@ थोबड़ा यह भी मामला है xlsb, जो बहुत बड़ी चादरों के लिए अनुशंसित है
फुल्विक

2
मुझे नहीं पता कि यह उत्तर इतने सारे डाउनवॉट क्यों मिलते हैं। ओपी ने निर्दिष्ट नहीं किया कि कौन सा एक्सेल प्रारूप तकनीकी रूप से यह भी एक मान्य उत्तर है
phuclv
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.