एक एक्सेल सीएसवी और एक मानक सीएसवी के बीच वास्तविक अंतर क्या है?
उदाहरण के लिए, जब एक सेल के अंदर लाइन टूटने वाले कॉलम को हैंडल करते हैं, तो वे इसे अलग तरीके से कैसे एनकोड करते हैं?
एक एक्सेल सीएसवी और एक मानक सीएसवी के बीच वास्तविक अंतर क्या है?
उदाहरण के लिए, जब एक सेल के अंदर लाइन टूटने वाले कॉलम को हैंडल करते हैं, तो वे इसे अलग तरीके से कैसे एनकोड करते हैं?
जवाबों:
यह पूरी तरह से इस बात पर निर्भर करता है कि आप "मानक" सीएसवी के रूप में क्या परिभाषित करते हैं। जहाँ तक मेरा सवाल है, एक्सेल RFC 4180 में उल्लिखित नियमों का अनुसरण करता है , "CSV फ़ाइलों के लिए सामान्य प्रारूप और माइम प्रकार"।
एक तालिका पर विचार करें जहां पहली पंक्ति में पहली सेल में दो लाइन ब्रेक हैं। एक्सेल में, यह निम्नलिखित की तरह दिखेगा:
+---+---------------+------------+------------+
| | A | B | C |
+---+---------------+------------+------------+
| 1 | col1, line1a | | |
| | col1, line1b | | |
| | col1, line1c | col2, row1 | col3, row1 |
| 2 | col1, row2 | col2, row2 | col3, row2 |
+---+---------------+------------+------------+
अब, Excel इसे कैसे निर्यात करेगा? आइए देखें - एक पाठ संपादक इसे प्रदर्शित करेगा:
"col1, line1a
col1, line1b
col1, line1c","col2, row1","col3, row1"
"col1, row2","col2, row2","col3, row2"
बहुत परिष्कृत नहीं है। यह एक गाड़ी रिटर्न (हेक्स 0D
) सम्मिलित करता है जहां लाइन ब्रेक हमारे सेल में था। हर सेल डबल कोट्स से घिरा हुआ है। इसके अलावा, वास्तविक पंक्तियों को एक गाड़ी वापसी के साथ अलग किया जाता है।
इसे सही ढंग से पार्स करने के लिए, एक सीएसवी पार्सर की आवश्यकता होगी
यदि ऐसा नहीं हुआ, तो आप इस तरह से कुछ गड़बड़ कर देंगे - ध्यान दें कि अब दो के बजाय चार लाइनें हैं , क्योंकि यह लाइन ब्रेक को अनदेखा करने में विफल रहा।
+---+---------------+------------+------------+
| | A | B | C |
+---+---------------+------------+------------+
| 1 | "col1, line1a | | |
| 2 | col1, line1b | | |
| 3 | col1, line1c" | col2, row1 | col3, row1 |
| 4 | col1, row2 | col2, row2 | col3, row2 |
+---+---------------+------------+------------+
लेकिन, आइए देखें कि आरएफसी क्या कहता है, शायद एक्सेल ने इसे सही किया?
लाइन विराम (CRLF), दोहरे उद्धरण और अल्पविराम वाले फ़ील्ड को दोहरे उद्धरणों में संलग्न किया जाना चाहिए।
नीट, बिल्कुल यही एक्सेल ने किया। इसलिए संक्षेप में, एक्सेल "मानक" सीएसवी फ़ाइल की सिफारिशों का पालन करता है। एक उचित CSV पार्सर को देखते हुए, यह Excel CSV फ़ाइलों को भी पढ़ने में सक्षम होना चाहिए।
मूल सीएसवी कार्यान्वयन से मेरी समझ यह थी कि सभी पाठ क्षेत्र उद्धरणों और संख्याओं में संलग्न थे, होने की आवश्यकता नहीं थी। Excel ऐसा नहीं करता है और यदि आप अपने Excel द्वारा बनाई गई csv फ़ाइलों को गैर-Microsoft प्लेटफार्मों पर अपलोड करने का प्रयास करते हैं तो वे विफल हो जाते हैं। यह एक मानक Microsoft दृष्टिकोण है, इंटरऑपरेबिलिटी को अनदेखा करें और नियमों का पालन करते हुए आँख बंद करके ध्यान केंद्रित करें। IE के साथ एक समान बात हुई, उन्होंने गद्दी और मार्जिन विशेषताओं के लिए HTML / css नियमों का सही ढंग से पालन किया और इस तथ्य को नजरअंदाज कर दिया कि हर मौजूदा वेब पेज और वेब ब्राउज़र ने उनके साथ अलग तरह से व्यवहार किया। परिणाम, लगभग हर वेब पेज पर अब IE के लिए विशेष नियम हैं। मुझे लगता है कि एक्सेल बेकार द्वारा निर्मित सीएसवी फाइलें हैं और मैन्युअल रूप से उन्हें ठीक से बनाने के लिए "कॉन्कैटनेट" फ़ंक्शन के एक कॉलम का उपयोग करें।