सवाल मैं एक्सेल को अपनी स्वादिष्ट सीएसवी फाइलों को खाने और बेकार डेटा को निकालने से कैसे रोक सकता हूं?


मेरे पास एक डेटाबेस है जो सीरियल नंबर द्वारा विजेट की बिक्री ट्रैक करता है। उपयोगकर्ता क्रेता डेटा और मात्रा दर्ज करते हैं, और प्रत्येक विजेट को कस्टम क्लाइंट प्रोग्राम में स्कैन करते हैं। फिर वे आदेश को अंतिम रूप देते हैं। यह सब बेकार ढंग से काम करता है।

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

नोटपैड या वी जैसे टेक्स्ट एडिटर में खोले जाने पर, फ़ाइल इस तरह दिखती है:

"Account Number","Store Name","S1","S2","S3","Widget Type","Date"
"4173","SpeedyCorp","268435459705526269","","268435459705526269","848 Model Widget","2011-01-17"

जैसा कि आप देख सकते हैं, सीरियल नंबर मौजूद हैं (इस मामले में दो बार, सभी माध्यमिक धारावाहिक समान नहीं हैं) और संख्याओं के लंबे तार हैं। जब Excel में यह फ़ाइल खोली जाती है, तो परिणाम बन जाता है:

Account Number  Store Name  S1  S2  S3  Widget Type Date 
4173    SpeedyCorp  2.68435E+17     2.68435E+17 848 Model Widget    2011-01-17

जैसा कि आपने देखा होगा, सीरियल नंबर डबल कोट्स से घिरे हैं। एक्सेल .csv फ़ाइलों में टेक्स्ट क्वालीफायर का सम्मान नहीं करता प्रतीत होता है। इन फ़ाइलों को एक्सेस में आयात करते समय, हमें शून्य कठिनाई होती है। उन्हें पाठ के रूप में खोलते समय, कोई परेशानी नहीं। लेकिन एक्सेल, असफल होने के बिना, इन फ़ाइलों को बेकार कचरे में बदल देता है। एक गैर-डिफ़ॉल्ट अनुप्रयोग के साथ एक CSV फ़ाइल खोलने की कला में अंतिम उपयोगकर्ताओं को निर्देश देने की कोशिश कर रहा है, क्या हम कहेंगे, थकाऊ। क्या उम्मीद है? क्या कोई ऐसी सेटिंग है जिसे मैं ढूंढने में असमर्थ हूं? यह एक्सेल 2003, 2007 और 2010 के साथ मामला प्रतीत होता है।


123
2018-01-19 01:08


मूल


क्या मैं सिर्फ नाम के लिए +1 दे सकता हूं? - tombull89
Excel does not seem to respect text qualifiers in .csv files - डबल उद्धरण हैं नहीं टेक्स्ट क्वालीफायर, वे आपके डेटा में कॉमा को बस अनुमति देते हैं, यदि आप अपने डेटा में कॉमा का उपयोग नहीं करते हैं तो वे हैं व्यर्थ। एक CSV फ़ाइल में सभी डेटा untyped है, तो एक्सेल केवल अनुमान लगा सकता है कि आपका बड़ा सीरियल नंबर एक है संख्या, और वह तब होता है जब आप एक्सेल में जाते हैं अधिकतम परिशुद्धता 15 अंकों में से, जो आपकी संख्या को कम कर रहा है। - DMA57361
एक्सेल डबल कोट्स के भीतर सभी कॉमा का सम्मान नहीं करता है। "12 अगस्त, 2012" पर विचार करें एक्सेल इसे कचरा में बदल देता है। - zundarz
मैं इसका जिक्र करना चाहता हूं एसयू सवाल। यह बताता है कि Excel में CSV से निपटने के दौरान आपके पास कौन से विकल्प हैं। - nixda
@nixda धन्यवाद! वे उपयोगी सुझाव हैं, खासकर अधिक अनुभवी उपयोगकर्ताओं के लिए। मेरी समस्या मानव समस्या का लगभग अधिक है, जिसमें एक्सेल स्वयं को .csv फ़ाइलों के साथ जोड़ता है, और लोग आइकन देखते हैं, और डबल क्लिक (क्योंकि इस तरह आप चीजों को खोलते हैं), और फिर आमतौर पर सहेजें (क्योंकि हम हमेशा कह रहे हैं उन्हें बचाने के लिए!), और सब खो गया है। लेकिन जब भी संभव हो मैं निश्चित रूप से आपके तरीकों का उपयोग करूंगा। - atroon


जवाब:


लेकिन एक्सेल, असफल होने के बिना, इन फ़ाइलों को बेकार कचरे में बदल देता है।

एक्सेल बेकार कचरा है।

उपाय

यदि कोई एक्सेल प्रारूप में आपका डेटा चाहते हैं तो मैं थोड़ा आश्चर्यचकित हूं कि उन तीन कॉलम पर दृश्य स्वरूपण को शून्य दशमलव स्थानों या "टेक्स्ट" के साथ "संख्या" में बदलने में असमर्थ था। लेकिन आइए मान लीजिए कि एक छोटा सा दस्तावेज़ कैसे प्रश्न से बाहर है।

आपके विकल्प हैं:

  1. अपने सीरियल नंबरों में एक गैर-संख्यात्मक, सफेद जगह नहीं है।
  2. कुछ डिफ़ॉल्ट स्वरूपण के साथ एक एक्सएलएस फ़ाइल या xlsx फ़ाइल लिखें।
  3. धोखा देती है और सूत्रों के रूप में उन संख्याओं को आउटपुट ="268435459705526269","",="268435459705526269" (आप भी कर सकते हैं ="268435459705526269",,="268435459705526269" अपने आप को 2 अक्षर बचाओ)। इसका सही ढंग से प्रदर्शित होने का लाभ है, और शायद आम तौर पर उपयोगी होता है, लेकिन संक्षेप में टूटा हुआ है (जैसा कि वे सूत्र हैं)।

विकल्प 3 के साथ सावधान रहें, क्योंकि कुछ प्रोग्राम (एक्सेल और ओपन ऑफिस कैल्क समेत), अब कॉमा के अंदर इलाज नहीं करेंगे ="" भागने के रूप में खेतों। इसका मत ="abc,xyz" दो स्तंभों का विस्तार करेगा और आयात तोड़ देगा।

के प्रारूप का उपयोग करना "=""abc,xy""" इस समस्या को हल करता है, लेकिन यह विधि अभी भी Excel की सूत्र लंबाई सीमा के कारण 255 वर्णों तक सीमित है।


57
2018-01-19 01:57



असल में, यह कठोर नहीं है। एक्सेल में उपर्युक्त संख्याओं में से एक को कॉपी और पेस्ट करें, फिर सुझाए गए संख्या प्रारूप को बदलें। एक्सेल मूल्य बदलता है, जिसके परिणामस्वरूप कचरा होता है। - Joe Internet
@ जो, मैं अपने शुरुआती सिंहावलोकन पर बहुत सरसरी था। एक्सेल वास्तव में कचरा पैदा कर रहा है, और खुद ही कचरा है। मैंने इसे प्रतिबिंबित करने के लिए अपना उत्तर अपडेट कर दिया है। एक विकल्प में "एक्सेल सीएसवी" हो सकता है और इसमें "प्रयोग योग्य, सार्थक सीएसवी" भी हो सकता है - Tyler
@ टायलर - मुझे नहीं लगता कि एक्सेल कचरा है, सिर्फ यह कह रहा है कि ओपी सही था कि यह इस मामले में कचरा पैदा कर रहा था। यह वास्तव में एक बहुत ही अच्छा सवाल है, बिना किसी शानदार समाधान के। - Joe Internet
प्रारूप कक्ष ... विकल्प का सुझाव दिया गया है, और मैंने इसका उपयोग करने की कोशिश की है। इस मामले में, जब आप फ़ाइल खोलते हैं, तो Excel धारावाहिकों को वैज्ञानिक नोटेशन में परिवर्तित करता है (सहमत नहीं, अप्रत्याशित नहीं) और सटीकता को टॉस करता है। जब आप उन्हें किसी संख्या या टेक्स्ट में बदलते हैं, तो स्ट्रिंग वापस नहीं आती है। उस वास्तव में समस्या का सार है। फॉर्मूला के रूप में आउटपुट करना हालांकि ऐसा कर सकता है ... मैंने इसके बारे में नहीं सोचा था। - atroon
@ DMA57361 व्यवहार की उम्मीद नहीं है, यह निर्धारित है। संख्यात्मक परिशुद्धता अच्छी तरह से प्रलेखित है, सीएसवी कितना एक्सेल पढ़ता है। चेतावनी की कमी और चुपचाप डेटा को छोड़ना बेतुका है। तथ्य यह है कि आप एक्सेल को डेटा को आयात करने का तरीका भी नहीं बता सकते हैं उतना ही बेतुका है। नकारात्मकता है जरूरत है? नहीं, लेकिन ईमानदारी सबसे अच्छी नीति है और इस तरह मैं महसूस करता हूं। - Tyler


हमें एक ही समस्या थी जहां हमारे पास सीएसवी फाइलें थीं जिसमें 3-5 जैसे श्रेणियां थीं और एक्सेल हमेशा उन्हें तारीखों में बदल देगा। 3-5 3 मार्च होगा, जिसके बाद संख्यात्मक पर वापस स्विचिंग हमें एक बेकार तारीख पूर्णांक दिया। हम इसके चारों ओर मिल गया

  1. सीएसवी को TXT एक्सटेंशन में नामित करना
  2. फिर जब हमने इसे एक्सेल में खोला, तो यह टेक्स्ट आयात विज़ार्ड में लाएगा
  3. विज़ार्ड में 3 के चरण 3 में हमने बताया कि प्रश्न में कॉलम टेक्स्ट थे और वे ठीक से आयात किया।

मैं ऐसा ही कर सकता हूं जो मुझे लगता है।

text import wizard

चियर्स


42
2018-01-31 18:30



इसे करने का सही तरीका होने के लिए +1। (संपादित करें: माफ करना समाधान को स्पष्ट करने के लिए थोड़ा संपादित करना था) - Jay
आपको अपनी फाइल का नाम बदलने की जरूरत नहीं है। बस आयात विज़ार्ड का उपयोग करें सभी कॉलम शिफ्ट-चयन करें और टेक्स्ट के रूप में चुनें। - nixda
पाठ आयात विज़ार्ड जवाब है। सीएसवी को देखने और संपादित करने के लिए Excel का उपयोग करने के तरीके को समझने के परिणामस्वरूप अन्य सभी समाधान आवश्यक हैकरी नहीं हैं। - Excellll
@Excellll, एक समय में यह एक फ़ाइल कर रहा है। इस प्रक्रिया को स्वचालित करते समय, 'अनावश्यक हैकरी' अक्सर दिन बचाता है। - Parrish Husband
मानक उपयोगकर्ताओं द्वारा सीएसवी फाइलों को प्रदर्शित करने के लिए एक्सेल का उपयोग किया जाता है जब यह पूरी तरह बेकार है। इससे पहले कि मैं टेक्स्ट-आयात-विज़ार्ड का उपयोग ~ 15 शुरुआती-कौशल कार्यालय उपयोगकर्ताओं को कैसे उपयोग करना है, मैं अपने आप से एक्सेल दस्तावेज़ स्रोत कोड टाइप करना चाहता हूं। - northkildonan


एक्सएमएल वर्कबुक उत्पन्न करना बेहतर समाधान है। ऐशे ही:

<?xml version="1.0" encoding="UTF-8"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office">
  </OfficeDocumentSettings>

  <ss:Worksheet ss:Name="Sheet 1">
    <Table>
    <Column ss:Width="100"/>
    <Column ss:Width="100"/>
    <Column ss:Width="150"/>
    <Column ss:Width="150"/>
    <Column ss:Width="150"/>
    <Column ss:Width="150"/>
    <Column ss:Width="80"/>
    <Column/>

    <Row>
      <Cell><Data ss:Type="String">Account Number</Data></Cell>
      <Cell><Data ss:Type="String">Store Name</Data></Cell>
      <Cell><Data ss:Type="String">S1</Data></Cell>
      <Cell><Data ss:Type="String">S2</Data></Cell>
      <Cell><Data ss:Type="String">S3</Data></Cell>
      <Cell><Data ss:Type="String">Widget Type</Data></Cell>
      <Cell><Data ss:Type="String">Date</Data></Cell>
    </Row>

    <Row>
      <Cell><Data ss:Type="String">4173</Data></Cell>
      <Cell><Data ss:Type="String">SpeedyCorp</Data></Cell>
      <Cell><Data ss:Type="String">268435459705526269</Data></Cell>
      <Cell><Data ss:Type="String">x</Data></Cell>
      <Cell><Data ss:Type="String">268435459705526269</Data></Cell>
      <Cell><Data ss:Type="String">848 Model Widget</Data></Cell>
      <Cell><Data ss:Type="String">2011-01-17</Data></Cell>
    </Row>


    </Table>
    <x:WorksheetOptions/>
  </ss:Worksheet>
</Workbook>

फ़ाइल में .xml एक्सटेंशन होना चाहिए। एक्सेल और ओपनऑफिस इसे सही तरीके से खोलें।


9
2018-02-17 11:13



क्या आपका मतलब है कि ओपी को डेटाबेस को एक्सएमएल प्रारूप में बदलने के लिए PHP स्क्रिप्ट का उपयोग करना चाहिए? - Prasanna
उपयोगकर्ताओं को एक्सेल में .csv खोलने या अपने सीएसवी को गड़बड़ करने से बहुत अधिक क्लीनर ताकि केवल एक्सेल आपके सीएसवी को समझ सके। यह एक स्कीमा का भी जटिल नहीं है। - binki
यह मानक दस्तावेज कहां है? मैं उपलब्ध डेटा प्रकारों के बारे में अधिक जानना चाहता हूं। - John Doherty


मेरा समाधान: मुझे सीरियल नंबर आयात करने के साथ एक ही समस्या है। उन्हें संख्याओं के रूप में नहीं माना जाना चाहिए, यानी कोई गणितीय कार्य नहीं किया जाता है, लेकिन हमें वहां की पूरी संख्या की आवश्यकता है। सीरियल नंबर में एक जगह डालने के लिए मेरे पास सबसे सरल चीज है। उदाहरण के लिए "12345678 90123456 1234"। जब Excel इसे आयात करता है, तो इसे संख्यात्मक के बजाय टेक्स्ट के रूप में माना जाएगा।


1
2018-05-08 08:08





मेरे पास लंबे खाते की संख्या खराब हो गई थी।

इस तरह मैंने इसे ठीक किया है:

लिबर ऑफिस / ओपन ऑफिस में अपना file.csv खोलें (आपको डिलीमीटर आदि निर्दिष्ट करना पड़ सकता है) फिर फ़ाइल को Excel XML फ़ाइल के रूप में सहेजें।

फिर Excel में इस फ़ाइल को खोलें और फिर आप देखेंगे कि स्तंभ अब वैज्ञानिक प्रारूप या जो कुछ भी नहीं बदला गया है। सुरक्षित होने के लिए कॉलम पर राइट-क्लिक करें और प्रारूप को टेक्स्ट के रूप में स्पष्ट रूप से सेट करें, फिर एक्सेल फ़ाइल प्रारूप के रूप में सहेजें।

एक्सेल प्रारूप फ़ाइल खोलें और कॉलम अभी भी ठीक होना चाहिए!


0
2018-05-17 14:53



जबकि यह होगा काम, किसी ऐसे व्यक्ति को समझाने की कोशिश कर रहा है जो केवल टूटा हुआ अंग्रेजी बोलता है क्यों उसे एक अलग ऑफिस सूट का उपयोग करने की आवश्यकता होगी, उतनी ही समस्याएं हल होती हैं जितनी हल होती है। एम $ कार्यालय के लिए वैकल्पिक सॉफ्टवेयर मेरी राय में अच्छा है, लेकिन मुझे एहसास है कि मैं हर किसी को परिवर्तित नहीं कर सकता। - atroon


आयात विज़ार्ड आरामदायक उपयोगकर्ताओं और एक-ऑफ स्थितियों के लिए सबसे अच्छा समाधान है। यदि आपको प्रोग्रामेटिक समाधान की आवश्यकता है, तो आप QueryTables का उपयोग कर सकते हैं। विधि जोड़ें (जो दृश्य विज़ार्ड दृश्यों के पीछे उपयोग कर रहा है)।

Workbooks.Add
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & "C:\myfile.csv", Destination:=Range("$A$1"))
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .TextFilePromptOnRefresh = False
    .TextFilePlatform = 437
    .TextFileStartRow = 1
    .TextFileParseType = xlDelimited
    .TextFileTextQualifier = xlTextQualifierDoubleQuote
    .TextFileConsecutiveDelimiter = False
    .TextFileTabDelimiter = False
    .TextFileSemicolonDelimiter = False
    .TextFileCommaDelimiter = True
    .TextFileSpaceDelimiter = False
    .TextFileColumnDataTypes = Array(1, 2, 2) 'Edit this line. Add a number for each column, 1 is general, 2 is text. Search the internet for other formats.
    .TextFileTrailingMinusNumbers = True
    .Refresh BackgroundQuery:=False
End With

0
2017-07-23 19:48