एक स्ट्रिंग के रूप में मूल्य की व्याख्या करने के लिए एक्सेल को मजबूर करने के लिए अल्पविराम-सीमांकित सीएसवी को प्रारूपित करना


64

मैं थोड़ी देर के लिए चारों ओर खोज रहा हूं कि कैसे एक सीएसवी फ़ाइल को आउटपुट करने के लिए इस तरह से एक्सेल को एक स्ट्रिंग के रूप में मानों की व्याख्या करने के लिए मजबूर किया जाए और उन्हें संख्याओं या तिथियों में बदलने की कोशिश न करें।

उदाहरण के लिए:

"141", "10/11/2002", "350.00", "1311742251"

एक्सेल "बुद्धिमानी" से इन सभी को अपनी मूल तिथि / संख्या प्रारूपों में बदलने की कोशिश करता है। क्या इसके आसपास कोई रास्ता है?


संपादित करें: मेरे प्रश्न के इरादे को स्पष्ट किया, भ्रम के लिए खेद है।

जवाबों:


67

स्रोत डेटा पर नियंत्रण रखने वालों के लिए, जाहिरा तौर पर एक्सेल CSV फ़ील्ड के प्रारूप का स्वतः पता लगाएगा, जब तक कि CSV कॉलम इस फ़ीचर में न हो:

"=""Data Here"""

जैसे ...

20,       5.5%,      "0404 123 351", "3-6",  "=""123"""
[number]  [percent]  [number]        [date]  [string]  <-- how Excel interprets

यह Google स्प्रेडशीट में भी काम करता है, लेकिन यह निश्चित नहीं है कि अन्य स्प्रेडशीट ऐप्स इस संकेतन का समर्थन करते हैं या नहीं।

यदि आपको संदेह है कि किसी भी डेटा में स्वयं उद्धरण शामिल हो सकते हैं, तो आपको उन्हें इस तरह से डबल-भागने की आवश्यकता है ...

"=""She said """"Hello"""" to him"""



(संपादित करें: सुधार के साथ अद्यतन, धन्यवाद DMA57361!)


बहुत बढ़िया, हमें सिर्फ डेटा बदलने की जरूरत है .. आह
Pricey

4
यह अंतिम स्तंभ होना चाहिए "=""123"""अन्यथा यह बुरी तरह से बनता है। फ़ील्ड वाले फ़ील्ड को "सीमांकित किया जाना चाहिए और "फ़ील्ड में अन्य "s के साथ भाग गए ।
DMA57361

@ DMA57361 वास्तव में जिस तरह से उसके पास है वह ठीक है, यह उसके बगल में अन्य दो क्षेत्र हैं जो पहले से ही समान संकेत को याद कर रहे हैं। उसने जो कुछ रखा वह एक स्ट्रिंग वापस करने के लिए उस सेल के सूत्र को सेट कर रहा है। इससे बचने के लिए, आप सेल के डेटा प्रकार को "टेक्स्ट" पर सेट कर सकते हैं।
ब्रेकथ्रू

2
@ उस तालिका को देखें, जिसमें CSV फ़ाइल है, ना कि Excel फ़ील्ड्स। अंतिम मान ="123"एक मान्य CSV फ़ील्ड नहीं है क्योंकि इसमें फ़ील्ड सीमांकक वर्ण होता है, " बिना इसे सही ढंग से परिसीमित किए या फ़ील्ड में। तथ्य यह है कि एक्सेल सूत्र के रूप में इसे पढ़ने के लिए होता है, विशुद्ध रूप से एक्सेल तक है और सीएसवी फ़ाइल के साथ कुछ नहीं करना है।
DMA57361

2
@PriceChild, मेरे मूल प्रश्न का बिंदु (जो कि मैंने वास्तव में बहुत अच्छी तरह से नहीं समझाया था) वास्तव में CSV को उपयोगकर्ताओं के लिए यथासंभव आसान बनाने के लिए प्रारूपित किया गया था । और इसलिए यह वह उत्तर है जो मैंने खुद पाया और पोस्ट करना चाहता था। DMA57361 वास्तव में एक उपयोगी सुधार भी लाया, धन्यवाद!
साइमन ईस्ट

36

कई लोगों की तरह, मैं भी उन्हीं फैसलों से जूझ रहा हूँ, जो Microsoft ने सुझाए गए समाधानों में किए हैं।

एक्सेल 2007 के लिए निम्नलिखित है:

  • सभी मूल्यों को दोहरे उद्धरण चिह्नों में रखने से मदद नहीं मिलती है
  • एक लाना = उन्हें डबल quutes में डालने के बाद सभी मूल्यों से पहले मदद करता है, लेकिन csv फ़ाइल सबसे अन्य अनुप्रयोगों के लिए बेकार बना देता है
  • सभी मूल्यों के आसपास डबल कोट्स में कोष्ठक लगाना बकवास है
  • दोहरे मान रखने से पहले सभी मूल्यों से पहले एक जगह रखना, तारीखों को रूपांतरण को रोकता है, लेकिन प्रमुख या अनुगामी शून्य की ट्रिमिंग को रोकता नहीं है।
  • एक मूल्य के सामने एक ही उद्धरण डालना केवल एक्सेल के भीतर डेटा दर्ज करते समय काम करता है।

हालाँकि:

अपने चारों ओर दोहरे उद्धरण लगाने से पहले सभी मूल्यों से पहले एक टैब लगाते हैं, तारीखों के रूपांतरणों को रोकते हैं और शून्य को प्रमुख या अनुगामी शून्य को ट्रिम करने से रोकते हैं और शीट प्रत्येक सेल के ऊपरी बाएं कोने में गंदा चेतावनी मार्कर भी नहीं दिखाती है।

उदाहरण के लिए:

"<tab character><some value>","<tab character><some other value>"

ध्यान दें कि टैब वर्ण दोहरे कोट्स के भीतर होना चाहिए। संपादित करें: यह पता चला है कि डबल उद्धरण भी आवश्यक नहीं हैं।

सीएसवी फ़ाइल को डबल क्लिक करने से एक्सेल में एक स्प्रेडशीट के रूप में फ़ाइल को खोला जा सकता है, जो सभी मूल्यों को दिखाता है जो पाठ डेटा की तरह ही ऊपर के रूप में व्यवहार किए जाते हैं। '' का उपयोग करने के लिए एक्सेल सेट करना सुनिश्चित करें दशमलव बिंदु के रूप में और नहीं ',' या csv फ़ाइल की हर पंक्ति प्रत्येक पंक्ति के पहले सेल में एक पाठ के रूप में समाप्त हो जाएगी। स्पष्ट रूप से Microsoft सोचता है कि CSV का अर्थ है "दशमलव बिंदु नहीं" अलग मूल्य।


इस टैब ट्रिक ने मेरा दिन बचाया, एक्सेल वास्तव में लंबे संख्यात्मक मानों को संख्याओं में परिवर्तित कर रहा था, और 15 वीं के बाद सभी अंकों को खो दिया। टैब उपसर्ग के साथ पाठ के रूप में व्यवहार करने के लिए एक्सेल प्राप्त करने का प्रबंधन। तो संख्या के लिए काम करता है, न कि सिर्फ तारीखों के लिए।
मार्कस य्रोजला

यह वास्तव में उपयोगी है, धन्यवाद!
फ्लेवियो

22

एक्सेल की आयात कार्यक्षमता का उपयोग करने से आप प्रारूप (ऑटो, पाठ या तिथि) को निर्दिष्ट कर सकते हैं, प्रत्येक कॉलम की व्याख्या की जानी चाहिए और इसके लिए डेटा फ़ाइलों में किसी भी संशोधन की आवश्यकता नहीं होती है।

आप इसे Excel 2007/2010 में DataGet External Data→ के रूप में पा सकते हैं From Text
या DataImport External DataImport DataExcel 2003 में।

यहां दिए गए उदाहरण डेटा पर कार्रवाई में एक्सेल 2003 टेक्स्ट इम्पोर्ट विजार्ड की एक छवि दी गई है, जो मुझे बाद के दो कॉलमों को पाठ के रूप में आयात करती है:

Excel 2003: चरण 3 पर पाठ आयात विज़ार्ड - डेटा प्रकार


उत्कृष्ट उत्तर DMA57361, सभी विस्तार के लिए धन्यवाद। मैंने अपने प्रश्न में वास्तव में उल्लेख नहीं किया था कि मैं एक स्क्रिप्ट लिख रहा हूं जो एक्सेल को डेटा निर्यात करता है, इसलिए मैं उपयोगकर्ताओं को इस तरह भ्रमित करने वाले विकल्पों के माध्यम से कूदने से रोकने की कोशिश कर रहा था। लेकिन आप वैसे भी मतदान किया। :-)
साइमन ईस्ट

@ साइमन, क्या आप स्क्रिप्ट लिख रहे हैं? किसी भी तरह से आप इसे मध्यवर्ती प्रारूप के माध्यम से जाने के बजाय सीधे वास्तविक एक्सेल फ़ाइलों का उत्पादन करने के लिए प्राप्त कर सकते हैं?
DMA57361

यह एक PHP स्क्रिप्ट है जो एक डेटाबेस टेबल निर्यात करता है। CSV के साथ काम करना सबसे आसान है, लेकिन आप सही हैं, मैं शायद कुछ ओपन-सोर्स कोड की मदद से XLS का उत्पादन कर सकता हूं, या यहां तक ​​कि सिर्फ एक HTML टेबल भी, जो मुझे लगता है कि पिछले अनुभव से एक्सेल में उचित परिणाम आए हैं (अनुमति देता है) रंग और स्वरूपण आदि, लेकिन डेटा-प्रकारों के बारे में निश्चित नहीं)।
साइमन ईस्ट

1
वहाँ एक है कुछ सवाल इतने पर अधिक पीएचपी → एक्सेल, पहले कुछ मैं सभी की कोशिश की है के बारे में है एक जवाब की ओर इशारा करते पीएचपी एक्सेल , ताकि एक नज़र लायक हो सकता है।
DMA57361

बहुत मददगार, काफी कुछ अंशों को पढ़ने के बाद, यह बहुत ही उपयोगी है
greg121

1

साइमन के उदाहरण ने मेरे लिए काम नहीं किया, और मुझे संदेह है कि यह एक भाषा अंतर है। C # में मेरा कार्य प्रारूप स्ट्रिंग जैसा दिखता है:

var linebreak = (i++ == list.Count) ? "" : "\r\n";

csv += String.Format("=\"{0}\",{1},{2},{3},=\"{4}\"{5}",
    item.Value, item.Status, item.NewStatus, item.Carrier, c.Status, linebreak);

और यह आउटपुट फाइल जैसा दिखता है:

="abababababab",INVALID,INVALID,USPS,="",
="9500100030492359000149",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9500100030492359000149",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9500100030492359000149",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9500100030492359000149",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9400110200793482982812",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9400110200793482982812",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9400110200793000216184",UNKNOWNSTATUS,INVALID,USPS,=""

जैसा कि देखा जा सकता है, आउटपुट फ़ाइल में प्रारूप वह ="VALUE",नहीं है "=""VALUE""",जो मेरा मानना ​​है कि एक विज़ुअल बेसिक सम्मेलन हो सकता है।

मैं एक्सेल 2010 का उपयोग कर रहा हूं। संयोग से, Google शीट इस तरह से फॉर्मेट की गई फ़ाइल को नहीं खोलें / रूपांतरित करेंगी। यदि आप समान चिह्न को हटाते हैं तो यह काम करेगा "VALUE",- एक्सेल अभी भी फ़ाइल को खोलेगा लेकिन इस तथ्य को अनदेखा करें कि आप चाहते हैं कि आपके कॉलम तार हों।


-2

एक्सेल को तारीख की व्याख्या करने के लिए मजबूर करने का एक सरल तरीका यह है कि पूर्ण उद्धरणों का उपयोग करने के बजाय, तारीख के सामने एक ही उद्धरण रखा जाए:

'10 / 11 / का वर्ष 2002

यदि आप इसे खोलने के बजाय CSV आयात कर सकते हैं, तो आप एक्सेल को बता सकते हैं कि प्रत्येक कॉलम को किस प्रारूप में होना चाहिए। मेरे द्वारा पूछे गए इस प्रश्न पर एक नज़र डालें ।


5
CSV फ़ाइलों को Excel में आयात नहीं किए जाने के कारण डाउनवोट किया गया। Excel भाव को शाब्दिक उद्धरण के रूप में व्याख्या करता है और इसलिए इसे सेल में दिखाता है।
Psynnott
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.