एक्सेल CSV8 एन्कोडिंग के साथ CSV को बंद [बंद]


606

मेरे पास एक एक्सेल फाइल है जिसमें कुछ स्पैनिश अक्षर (टिल्ड आदि) हैं जिन्हें मुझे आयात फाइल के रूप में उपयोग करने के लिए एक सीएसवी फाइल में बदलने की आवश्यकता है। हालाँकि, जब मैं CSV के रूप में सेव करता हूँ तो यह "विशेष" स्पैनिश कैरेक्टर्स का उपयोग करता है जो ASCII वर्ण नहीं हैं। यह बाएं और दाएं उद्धरणों और लंबी डैश के साथ भी ऐसा लगता है जो मैक में एक्सेल फाइल बनाने वाले मूल उपयोगकर्ता से आते हैं।

चूंकि CSV सिर्फ एक पाठ फ़ाइल है, मुझे यकीन है कि यह UTF8 एन्कोडिंग को संभाल सकता है, इसलिए मैं अनुमान लगा रहा हूं कि यह एक एक्सेल सीमा है, लेकिन मैं एक्सेल से सीएसवी तक पहुंचने और गैर-एएससीआईआई पात्रों को रखने के लिए एक रास्ता ढूंढ रहा हूं। बरकरार।


15
मैंने उस प्रश्न को पोस्ट करने से पहले देखा था, लेकिन यह पहले से ही UTF8 CSV के बारे में है और इसे एक्सेल में खोलने का दूसरा तरीका नहीं है।
जेफ ट्रेकिंग

7
नीचे दिए गए जवाब काम करने लगते हैं, लेकिन वे सिर्फ वर्कअराउंड हैं। क्या किसी को पता है कि एक्सेल को कैसे करना है?
NielW

2
मैं अपने 2 सेंट को छोड़ना चाहता था: बहुत परीक्षण और त्रुटि के बाद, वीबीए कार्यों का उपयोग करने का प्रयास, आदि ... (मैं विभिन्न कारणों से एक्सेल 97 का उपयोग कर रहा हूं) ... बस सेविंग-अस टू "सीएसवी (एमएसडीओएस) "प्रारूप ने मेरे लिए इस समस्या को हल कर दिया है। मेरे मामले में, Citrix वेबिनार (GotoWebinar) CSV डेटा हमारे अंत में कुछ एपेक्स कोड को तोड़ने के लिए वर्णों के साथ समाप्त होता है - "CSV (MSDOS)" को सहेजते हुए मुझे (पहले) CSV निर्यात को Notadad ++ में लोड करना और इसे UTF में पेस्ट करना - 8 रिक्त फ़ाइल और फिर से शुरू। :-P :-)
AMM

2
यह एक बहुत कष्टप्रद एक्सेल सीमा है। मैंने इसके बारे में एक uservoice सुविधा का अनुरोध खोला: excel.uservoice.com/forums/… , वोट करने के लिए स्वतंत्र महसूस करें और इसे करें
Doron Yaacoby

7
एक्सेल UserVoice के अनुसार, माइक्रोसॉफ्ट UTF-8 पर काम शुरू कर .csv पिछले महीने के लिए excel.uservoice.com/forums/...
Moloko

जवाबों:


405

Google स्प्रेडशीट का उपयोग करने के लिए एक सरल उपाय है। पेस्ट करें (केवल यदि आपके पास जटिल सूत्र हैं) या शीट आयात करें तो CSV डाउनलोड करें। मैंने सिर्फ कुछ किरदारों को आजमाया है और यह अच्छी तरह से काम करता है।

ध्यान दें: आयात करते समय Google शीट की सीमाएँ होती हैं। देखें यहाँ

नोट: Google शीट के साथ संवेदनशील डेटा से सावधान रहें।

EDIT: एक अन्य विकल्प - मूल रूप से वे VB मैक्रो या एडिन्स को यूटीएफ 8 के रूप में सहेजने के लिए मजबूर करते हैं। मैंने इनमें से किसी भी समाधान की कोशिश नहीं की है, लेकिन वे उचित लगते हैं।


63
शायद जोएल स्लॉन्स्की (एक्सेल के पूर्व पीएम) उन्हें अपने दशक पुराने पोस्ट को एब्सोल्यूट मिनिमम हर सॉफ्टवेयर डेवलपर पर बिल्कुल भेज सकते हैं , यूनिकोड और कैरेक्टर सेट के बारे में सकारात्मक रूप से जानना चाहिए ?
शाम

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

9
OpenOffice JustWorks (tm) बिना किसी परेशानी के - मुझे लगता है कि इसे शामिल किया जाना चाहिए
Rbjz

9
Uhhh। मैंने अभी-अभी अपनी पीठ थपथपाई थी। यदि आपकी एक्सेल फ़ाइल में 200,000 लाइनें हैं तो क्या होगा? या संवेदनशील डेटा शामिल है जिसे आप एक्सेल स्प्रेडशीट में शामिल नहीं करना चाहते हैं? जरूरत पड़ने पर Openoffice / Libreoffice का उपयोग करें।
सेब

2
यदि फ़ाइल का आकार बड़ा है तो क्या होगा? अगर मुझे सही तरीके से याद है तो गॉलज शीट की साइज़ लिमिट 75M के आसपास होती है। मेरे पास एक फाइल है 700M
News_is_Selection_Bias

133

मैंने पाया है OpenOffice की स्प्रेडशीट एप्लिकेशन, Calc, CSV डेटा को संभालने में वास्तव में अच्छी है।

"इस रूप में सहेजें ..." संवाद में, CSV के लिए अलग-अलग एन्कोडिंग प्राप्त करने के लिए "प्रारूप विकल्प" पर क्लिक करें। LibreOffice उसी तरह से काम करता है जैसे AFAIK।

कैल्क सेव डायलॉग


मुझे यकीन है कि यह काम करता है, मेरे पास ओपनऑफ़िस होने के लिए पहले से ही ऐसा नहीं है इसलिए Google डॉक्स मेरी स्थिति में आसान था। लेकिन सुझाव के लिए धन्यवाद
जेफ ट्रेकिंग

19
OpenOffice Calc में Google डॉक्स और एक्सेल दोनों की तुलना में "CSV" फाइलें (फील्ड सेपरेटर, एन्कोडिंग आदि) खोलने और सहेजने के समय अधिक और बेहतर विकल्प हैं। इसके अलावा, Google डॉक्स वर्तमान में प्रति स्प्रेडशीट 400,000 कोशिकाओं की सीमा से ग्रस्त है, जो OpenOffice Calc नहीं करता है।
ईसाई डेवन

3
मैं पुष्टि कर सकता हूं कि लिब्रे ऑफिस भी काम करता है: यह निर्यात पर चरित्र एन्कोडिंग विकल्प प्रदान करता है जो एक्सेल में दुख की कमी है।
रूपर्ट रॉन्स्ले

1
संवेदनशील डेटा के साथ काम करने वालों के लिए यह एक बढ़िया विकल्प है। ओपनऑफिस सुइट उन लोगों के लिए एक पोर्टेबल स्थापित हो सकता है जो लॉक डाउन मशीनों के साथ हैं।
नाथन

119
  1. एक्सेल शीट को "यूनिकोड टेक्स्ट (.txt)" के रूप में सहेजें। अच्छी खबर यह है कि सभी अंतर्राष्ट्रीय वर्ण UTF16 में हैं (ध्यान दें, UTF8 में नहीं)। हालाँकि, नई "* .txt" फ़ाइल TAB सीमांकित है, अल्पविराम सीमांकित नहीं है, और इसलिए यह एक सच्चा CSV नहीं है।

  2. (वैकल्पिक) जब तक आप आयात के लिए TAB सीमांकित फ़ाइल का उपयोग नहीं कर सकते, अपने पसंदीदा पाठ संपादक का उपयोग करें और TAB वर्णों को अल्पविराम "," के साथ बदलें।

  3. लक्ष्य एप्लिकेशन में अपनी * .txt फ़ाइल आयात करें। सुनिश्चित करें कि यह UTF16 प्रारूप को स्वीकार कर सकता है।

यदि गैर-बीएमपी कोड बिंदुओं के समर्थन के साथ UTF-16 को ठीक से लागू किया गया है, तो आप बिना जानकारी खोए UTF-16 फ़ाइल को UTF-8 में बदल सकते हैं। ऐसा करने के अपने पसंदीदा तरीके को खोजने के लिए मैं इसे आपके पास छोड़ता हूं।

मैं एक्सेल से मूडल में डेटा आयात करने के लिए इस प्रक्रिया का उपयोग करता हूं।


5
अंत में कुछ है कि काम किया! सफलता के बिना एक्सेल 2013 पर उपरोक्त एक्सेल विकल्पों की कोशिश की। मैं बस विभाजित चरित्र के रूप में \ t का उपयोग करने के लिए बंद कर दिया जब मैं इसे पार्स किया और यह सही काम किया!
मटियास लिंडबर्ग

1
MySQL में आयात करने के लिए CSV के रूप में XLS को निर्यात करने की आवश्यकता है। Excel 2003 का उपयोग करके मैंने "Unicode Text (.txt)" प्रारूप में निर्यात किया, फिर TAB को बदलने के लिए Notepad ++ का उपयोग किया ;, फिर डिफ़ॉल्ट रूप से txt-फ़ाइल को phpmyadmin में आयात किया "डिफ़ॉल्ट रूप से फ़ाइल का कैरेक्टर सेट: utf-8", प्रारूप "CSV लोड डेटा का उपयोग "। सभी एन्कोडिंग को सही तरीके से स्थानांतरित किया गया था।
काई नैक

3
धन्यवाद। यह समझ में आता है। क्यों MS अभी भी एक मानक के रूप में UTF का उपयोग करने से मुझे मना करता है।
Oskar Limka

4
@OskarLimka: जब आप "UTF" कहते हैं, तो क्या आपका मतलब UTF-8 या UTF-16 है? क्योंकि Microsoft UTF-16 का काफी उपयोग करता है।
फ्लिम

7
"अच्छी खबर यह है कि सभी अंतर्राष्ट्रीय वर्ण UTF16 में हैं (ध्यान दें, UTF8 में नहीं)।" : पूरी बकवास । यूटीएफ -8 और यूटीएफ -16 यूनिकोड कोड बिंदुओं के पूरे सेट को एनकोड करने के दो तरीके हैं।

43

मुझे पता है कि यह एक पुराना सवाल है लेकिन मैं ओपी के समान मुद्दों से जूझते हुए इस सवाल पर आया था।

प्रस्तावित समाधानों में से किसी को भी एक व्यवहार्य विकल्प नहीं मिला, मैंने यह पता लगाने के लिए कि क्या एक्सेल का उपयोग करके ऐसा करने का कोई तरीका है।

सौभाग्य से, मैंने पाया है कि खो चरित्र मुद्दा केवल (मेरे मामले में) होता है जब xlsx प्रारूप से सीएसवी प्रारूप में सहेजा जाता है। मैंने xlsx फ़ाइल को पहले xls में सहेजने की कोशिश की, फिर csv को। यह वास्तव में काम किया।

कृपया इसे आज़माएं और देखें कि क्या यह आपके लिए काम करता है। सौभाग्य।


3
मेरे लिए, एक्सेल पर मैक 2011 के लिए, यह काम करता है लेकिन केवल तभी जब मैं चुनता हूं Windows comma separated (CSV)। यदि मैं डिफ़ॉल्ट या डॉस CSV विकल्पों का उपयोग करता हूं तो यह काम नहीं करता है - ये दोनों उच्चारण पात्रों को यादृच्छिक रद्दी वर्णों से बदल देते हैं। सहित पात्रों के लिए परीक्षण किया गया é, è, â... अगर यह असली UTF8 है, लेकिन पात्रों घायल नहीं कर रहे हैं पता नहीं है।
user56reinstatemonica8

12
त्वरित पुष्टि - इस पद्धति के साथ निर्मित फ़ाइलें (मैक 2011 के लिए एक्सेल) UTF-8 csvs, BUT का उत्पादन नहीं करती हैं , वे CSV का उत्पादन करती हैं, जिसमें कम से कम सही वर्ण होते हैं और इसलिए टेक्स्ट एडिटर में दर्द रहित रूप से UTF8 में परिवर्तित किया जा सकता है , जो कि लुगदी से भरे हुए कबाड़ से एक बड़ा कदम है जो कि एक्सेल डिफ़ॉल्ट रूप से बाहर निकलता है।
user56reinstatemonica8

हाँ, सहमत, इसने मेरे लिए भी (एक्सेल मैक 2011) काम किया और यह वास्तव में अधिक उत्थान के योग्य है।
cbmanica

1
यह मेरे लिए (एक्सेल 2007 का उपयोग करके) काफी काम नहीं किया। मेरी फ़ाइल में 2 गैर-ASCII वर्ण थे और उनमें से एक को इस तरह से सहेजा गया था, दूसरा नहीं था।
EM0

1
ध्यान दें कि परिणामस्वरूप CSV फ़ाइल UTF-16 में होगी, न कि पूछे गए प्रश्न के अनुसार UTF-8।
फ्लिअम

38

आप यूनिक्स के तहत आइकनव कमांड का उपयोग कर सकते हैं (विंडोज पर लिबीकॉन के रूप में भी उपलब्ध है )।

कमांड लाइन में एक्सेल के तहत CSV के रूप में सहेजने के बाद:

iconv -f cp1250 -t utf-8 file-encoded-cp1250.csv > file-encoded-utf8.csv

(अपने एन्कोडिंग के साथ cp1250 को बदलना याद रखें)।

पोस्ट कोड डेटाबेस जैसी बड़ी फ़ाइलों के लिए तेजी से और महान काम करता है, जिसे GoogleDocs (400.000 सेल लिमिट) पर आयात नहीं किया जा सकता है।


5
यह बेकार है यदि आपकी सामग्री में वर्ण हैं जो 1250 में एन्कोड नहीं किए जा सकते हैं, तो एक्सेल में यूनिकोड .txt के रूप में निर्यात करने का एक बेहतर तरीका होगा और Utf16 से कनवर्ट करने के लिए आइकनव का उपयोग करें। शायद t \ t ’से’, ’का अनुवाद करने के लिए एक sedया भी करें tr
सेबस्टियन

5
CSV या MS-DOS CSV के रूप में सहेजते समय Excel की डिफ़ॉल्ट एन्कोडिंग लगती है, और Windows CSV के रूप में सहेजते समय Windows 1252 (जैसा कि मैक 2011 के लिए Excel पर परीक्षण किया गया है)।
क्लेमेंटेशन

4
मैं पूरी तरह से सहमत हूं कि यह बेकार है, जब एक्सेल .csv प्रारूप में सहेजता है, तो यह जानकारी खो देता है जब यह यूनिकोड कोड बिंदुओं पर आता है जिसे एक-बाइट-प्रति-कोड-पॉइंट एन्कोडिंग में एन्कोड नहीं किया जा सकता है।
फ्लिम

26

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

1. एक्सेल से बचाएं

Excel में, file.txtप्रकार का उपयोग करके डेटा को सहेजें Unicode Text (*.txt)

2. PowerShell प्रारंभ करें

powershellस्टार्ट मेनू से चलाएं ।

3. फ़ाइल को PowerShell में लोड करें

$data = Import-Csv C:\path\to\file.txt -Delimiter "`t" -Encoding BigEndianUnicode

4. डेटा को CSV के रूप में सहेजें

$data | Export-Csv file.csv -Encoding UTF8 -NoTypeInformation

2
इस विधि ने 15,000 से अधिक रिकॉर्ड के साथ CSV फ़ाइल के लिए पूरी तरह से काम किया, नोटपैड द्वारा 1024 से अधिक वर्ण सीमा की लाइनों के साथ। सेकंड लेता है, और तीसरे पक्ष के सॉफ़्टवेयर का उपयोग नहीं करता है। धन्यवाद!
पूर्ण

आह, जब मैंने Google पत्रक का उपयोग करने की कोशिश की, तब भी मैं उसी समस्या में भाग गया। तो शायद यह PowerShell रणनीति ने काम किया होगा। यहाँ मेरी समस्या थी। कुछ पात्रों जैसे कि कुछ इमोजीस के लिए, आपको CHARACTER SET utf8mb4यहां बताए अनुसार उपयोग करने की आवश्यकता है: stackoverflow.com/a/10959780/470749
रायन

1
@ Ryan यह मुद्दा MySQL के लिए विशिष्ट है। मैंने सिर्फ उस प्रश्न में समस्याग्रस्त चरित्र की कोशिश की और यह एक्सेल और पॉवरशेल दोनों में ठीक काम किया।
डॉन क्रिकेशंक

24

ऐसा करने का एकमात्र "आसान तरीका" इस प्रकार है। सबसे पहले, महसूस करें कि एक्सेल .csv फ़ाइल में क्या प्रदर्शित किया गया है और क्या छिपा हुआ है, के बीच अंतर है।

  1. एक एक्सेल फ़ाइल खोलें जहाँ आपके पास जानकारी (.xls, .xlsx) है
  2. एक्सेल में, फ़ाइल प्रकार के रूप में "सीएसवी (कोमा डिलीटेड) (* .csv) चुनें और उस प्रकार के रूप में सहेजें।
  3. नोटपैड में ("प्रोग्राम्स" और फिर स्टार्ट मेनू में सहायक उपकरण), नोटपैड में सहेजी गई .csv फ़ाइल खोलें
  4. फिर चुनें -> इस रूप में सहेजें ... और "सहेजें के रूप में" बॉक्स के निचले भाग में, "एन्कोडिंग" के रूप में लेबल किया गया एक चयन बॉक्स है। UTF-8 का चयन करें (ANSI का उपयोग न करें या आप सभी लहजे आदि खो दें)। UTF-8 का चयन करने के बाद, फिर फ़ाइल को मूल से थोड़ा अलग फ़ाइल नाम में सहेजें।

यह फ़ाइल UTF-8 में है और सभी वर्णों और उच्चारणों को बनाए रखती है और इसे आयात किया जा सकता है, उदाहरण के लिए, MySQL और अन्य डेटाबेस प्रोग्राम में।

यह उत्तर इस मंच से लिया गया है ।


9
यह गलत है, क्योंकि चरण 2 में CSV के रूप में बचत होती है। इसके साथ परेशानी यह है कि एक्सेल CSV फाइल को cp1252 में सेव करता है, जो एक-बाइट-प्रति-कोड-पॉइंट एन्कोडिंग है। इससे उन पात्रों के लिए जानकारी का नुकसान होता है जो एक बाइट में फिट नहीं हो सकते।
फ़्लिम

इसने मेरे लिए काम किया, लेकिन मैं यह नहीं समझ सकता कि क्यों। जावास्क्रिप्ट द्वारा उत्पन्न मेरी फ़ाइल हमेशा एक्सेल (एक अलग एन्कोडिंग के रूप में) में गलत तरीके से पढ़ी जाती है। लेकिन जब मैं नोटपैड में खोलता हूं और utf-8 के रूप में सहेजता हूं, तो यह ठीक काम करता है! तो, लगता है कि एन्कोडिंग के साथ मेटाडेटा है। यह काम किस प्रकार करता है? यदि नोटपैड UTF-8 CSV फ़ाइलों को सहेज सकता है और एक्सेल उन्हें पढ़ सकता है, तो मेरे कार्यक्रम में संभव है कि सही UTF-8 CSV फाइलें उत्पन्न करें, जो एक्सेल पढ़ सकता है?
felipeaf

मेरे लिए काम किया। एक्सेस से परिवर्तित एक XSLX में। Diacritics और LF-only और ISO-date स्वरूप सभी ठीक हैं। एक या दूसरे ने अधिक लोकप्रिय समाधानों के साथ काम नहीं किया।
रॉल्फबली

21

एक और जिसे मैंने उपयोगी पाया है: " नंबर " CSV के रूप में सहेजते समय एन्कोडिंग-सेटिंग्स की अनुमति देता है।


8
^ यह मैक OSX में एक आवेदन है
एस.सुक। A

संख्याओं से भी सावधान रहें क्योंकि इसमें पंक्तियों की संख्या में सीमा होती है, और मैंने इस तरह से डेटा को इस तरह परिवर्तित नहीं किया है कि इसे साकार करने से पहले इसमें से कुछ को काट दिया गया था। एक्सेल / सीएसवी में बहुत अधिक सीमाएँ हैं।
श्रीमती

14

"nevets1219" Google डॉक्स के बारे में सही है, हालांकि यदि आप बस उस फ़ाइल को "आयात" करते हैं जो अक्सर इसे UTF-8 में परिवर्तित नहीं करता है।

लेकिन अगर आप CSV को मौजूदा Google स्प्रेडशीट में आयात करते हैं तो यह UTF-8 में परिवर्तित हो जाता है।

यहाँ एक नुस्खा है:

  • मुख्य डॉक्स (या ड्राइव) स्क्रीन पर "बनाएँ" बटन पर क्लिक करें और "स्प्रेडशीट" चुनें
  • "फ़ाइल" मेनू से "आयात" चुनें
  • "फ़ाइल चुनें" पर क्लिक करें
  • "स्प्रैडशीट बदलें" चुनें
  • जो भी आप एक सेपरेटर के रूप में उपयोग कर रहे हैं उसे चुनें
  • "आयात" पर क्लिक करें
  • "फ़ाइल" मेनू से "डाउनलोड के रूप में" चुनें -> सीएसवी (वर्तमान शीट)

परिणामी फ़ाइल UTF-8 में होगी


2
इस उत्तर के साथ परेशानी यह है कि आपने पहली बार में CSV फ़ाइल कैसे बनाई। यदि आपने एक्सेल में CSV के रूप में बचत को सरल बना दिया है, तो CSV फ़ाइल cp1252 में होगी, जो एक-बाइट-प्रति-कोड-पॉइंट एन्कोडिंग है। यह जानकारी के नुकसान की ओर ले जाएगा जब यह उन पात्रों की बात आती है जो एक बाइट में फिट नहीं हो सकते।
फ्लिम

खैर, यह इनमें से किसी भी जवाब के साथ एक समस्या है। और किसी भी उत्तर के साथ होगा कि कैसे यूटीएफ -8 में परिवर्तित किया जाए क्योंकि मूल एन्कोडिंग क्या था, यह जानने या नियंत्रित करने का कोई तरीका नहीं है।
RedYeti

1
कुछ उत्तर इस बारे में बात करते हैं कि उस मुद्दे को गोल कैसे किया जाए, उदाहरण के लिए, stackoverflow.com/a/15500052/247696
फ्लिम

13

नोटपैड ++ का उपयोग करना

यह Excel द्वारा सहेजे गए दूषित CSV फ़ाइल को ठीक करेगा और उसे उचित एन्कोडिंग में सहेजेगा।

  • एक्सेल से CSV निर्यात करें
  • नोटपैड ++ में लोड करें
  • एन्कोडिंग ठीक करें
  • सहेजें

Excel CP-1252 / Windows-1252 में बचाता है। नोटपैड ++ में CSV फ़ाइल खोलें। चुनते हैं

Encoding > Character Sets > Western European > Windows-1252

फिर

Encoding > Convert to UTF-8
File > Save

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


मुझे यह गलत लग सकता है, लेकिन आप नोटपैड ++ में फ़ाइल को ".csv" के रूप में सहेज नहीं सकते हैं और यही है।
डैनियल मौरर

1
हाँ तुम कर सकते हो। आप केवल एक पाठ फ़ाइल सहेज रहे हैं, और .csvएक पाठ फ़ाइल है। यह उत्तर एक्सेल द्वारा दूषित सीएसवी फ़ाइल को खोल देगा, इसे ठीक कर देगा, फिर इसे उचित एन्कोडिंग के साथ फिर से सेव करेगा।
क्लो

आप जो संवाद कर रहे हैं, उसके दूरगामी परिणाम हैं। इस प्रख्यात विधि को रोजगार देते हुए, हम एक उच्च डेटा गुणवत्ता प्राप्त कर सकते हैं! वाहवाही! (क्विज़: यह टिप्पणी इतनी
विचित्र

9

एक्सेल 2016 और ऊपर (ऑफिस 365 सहित) के तहत, एक सीएसवी विकल्प है जो यूटीएफ -8 प्रारूप को समर्पित है।

Office 365 में, इस रूप में सहेजें; जहाँ पहले किसी ने CSV (कोमा डिलेस्टेड) ​​को चुना हो सकता है, अब एक प्रकार की फाइल जो आप सेव कर सकते हैं, वह है CSV UTF-8 (कोमा सीमांकित) (* .csv)।


1
आपको उस विकल्प का उपयोग करने के बारे में कुछ निर्देश प्रदान करने चाहिए।
रोविक्को

1
@dexgecko सुनिश्चित करें: इसे "सहेजें" बटन / मेनू कहा जाता है। विंडोज पर अब एक्सेल 2016 में चार सीएसवी निर्यात प्रकार हैं: सीएसवी "एएनएसआई" (अधिक या कम समतुल्य लैटिन 1) के रूप में बचाता है, लेकिन यह गैर-पश्चिमी ओएस इंस्टॉल के साथ अलग हो सकता है, मुझे यकीन नहीं है), यूटीएफ -8 सीएसवी BOM के साथ UTF-8 के रूप में बचत, CSV (DOS) CP850 के रूप में बचाता है (फिर से, माई इंस्टाल पर निर्भर करता है?) और CSV (मैक) MacRoman के रूप में बचाता है।

हालांकि, एक्सेल केवल UTF-8 और ANSI CSV फ़ाइलों को पढ़ने में सक्षम होगा (एक्सेल, चुनने के लिए BOM का उपयोग कर सकता है)। किसी अन्य एन्कोडिंग से आयात करने के लिए, .xt के रूप में नाम बदलें, एक्सेल से खोलें (आपके पास तब चुनने के लिए एन्कोडिंग की एक लंबी सूची है), और चूंकि यह विभाजक को सही ढंग से व्याख्या नहीं करेगा, पंक्तियों को विभाजित करने के लिए "कन्वर्ट" बटन का उपयोग करें। आप इस ट्रिक का उपयोग तब भी कर सकते हैं जब एक अलग भाषा सम्मेलन से सीएसवी आयात कर रहे हों (उदाहरण के लिए फ्रेंच में, दायर विभाजक एक अर्धविराम है, क्योंकि अल्पविराम पहले से ही दशमलव विभाजक के रूप में उपयोग किया जाता है)।

1
@ जीन-क्लाउडअरबट स्ट्रेंज, मुझे अपने एक्सेल 2016 में UTF-8 CSV विकल्प दिखाई नहीं दे रहा है।
rovyko

1
@dexgecko स्ट्रेंज, वास्तव में। इस पृष्ठ के अनुसार (फ्रेंच में, क्षमा करें), कार्यक्षमता को 2016 के निर्माण में, nven 2016 में जोड़ा गया था। मेरे पास वर्तमान में 180 मिलियन संस्करण है। हालाँकि, मैंने सोचा था कि केवल Office 365 में उस तरह के एवोल्यूशन थे, और मैं ऑफिस प्रो 2016 (365 फ्लेवर नहीं) का उपयोग कर रहा हूं। शायद अपने कार्यालय को अपडेट करने का प्रयास करें।

8

पूरी तरह से प्रोग्रामेटिक (या कम से कम सर्वर-साइड) समाधान की तलाश करने वालों के लिए, मुझे कैटडॉक के xls2csv टूल का उपयोग करके बड़ी सफलता मिली है।

कैटडॉक स्थापित करें:

apt-get install catdoc

रूपांतरण करें:

xls2csv -d utf-8 file.xls > file-utf-8.csv 

यह तेजी से धधक रहा है।

ध्यान दें कि यह महत्वपूर्ण है कि आप -d utf-8ध्वज को शामिल करें , अन्यथा यह डिफ़ॉल्ट cp1252एन्कोडिंग में आउटपुट को एन्कोड करेगा , और आप जानकारी खोने का जोखिम चलाते हैं।

ध्यान दें कि xls2csvयह केवल .xlsफाइलों के साथ भी काम करता है , यह .xlsxफाइलों के साथ काम नहीं करता है ।


या एक अलग आउटपुट एन्कोडिंग का चयन करें, हर किसी की समस्याओं को एक ही उत्तर के साथ ठीक नहीं कर सकता है :-)
mpowered

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

1
वहाँ तुम जाओ, मैंने उत्तर पोस्ट में समस्या को ठीक कर दिया और डाउनवोट हटा दिया।
फ्लिम

7

Powershell का उपयोग करने के बारे में क्या।

Get-Content 'C:\my.csv' | Out-File 'C:\my_utf8.csv' -Encoding UTF8

1
गैर-एससीआई स्पेनिश वर्णों के पाठ को मूल स्पेनिश चरित्र से एएनएसआई द्वारा उपयोग किए जाने वाले एनकोड स्ट्रिंग में बदल दिया जाएगा। तो, मूल के रूप में पाठ समान नहीं होगा।
जेसन विलियम्स

7

सबसे आसान तरीका: ओपन ऑफिस और गूगल डॉक्स की जरूरत नहीं है

  1. अपनी फ़ाइल को "यूनिकोड टेक्स्ट फ़ाइल" के रूप में सहेजें;
  2. अब आपके पास एक यूनिकोड पाठ फ़ाइल है
  3. इसे "नोटपैड" और "सेव एज़" के साथ "यूटीएफ -8" या अन्य कोड पेज जिसे आप चाहते हैं, के साथ खोलें
  4. फ़ाइल एक्सटेंशन को "txt" से "csv" में बदलें। इसका परिणाम टैब-सीमांकित UTF-8 csv फ़ाइल में होगा।
  5. यदि आप अल्पविराम से भरा फ़ाइल चाहते हैं, तो आपने जो csvफ़ाइल का नाम बदला है उसे खोलें और सभी टैब को अल्पविराम से बदल दें। विन 10 पर नोटपैड में ऐसा करने के लिए, बस एक टैब फ़ील्ड चुनें और फिर क्लिक करें Ctrl+H। खुलने वाली विंडो ,में, "बदलें के साथ" फ़ील्ड में एक अल्पविराम लिखें, फिर "सभी बदलें" पर क्लिक करें। अपनी फ़ाइल सहेजें। परिणाम कॉमा-सीमांकित UTF-8 csv फ़ाइल होगी।

वैसे भी MS-Office के साथ इसे न खोलें !!! अब आपके पास एक टैब सीमांकित CSV फ़ाइल है। या, यदि आप चरण संख्या 5 लागू करते हैं तो अल्पविराम सीमांकित है।


2
टैब सीमांकित फ़ाइल के लिए .txtएक्सटेंशन का उपयोग करना बेहतर हो सकता है । csv, यानी अल्पविराम से अलग की गई फाइलें, सिर्फ भ्रमित करने वाली हैं।
dof1985

5

जैसा कि यह हास्यास्पद लग सकता है, मैंने अपना 180MB स्प्रेडशीट को UTF8 CSV फ़ाइल में सहेजने का सबसे आसान तरीका एक्सेल में कोशिकाओं का चयन किया, उन्हें कॉपी किया और क्लिपबोर्ड की सामग्री को SublimeText में पेस्ट किया।


1
यह काम करता है क्योंकि एक्सेल क्लिपबोर्ड के माध्यम से चयन का एक टीएसवी संस्करण प्रदान करता है । आप SublimeText के बजाय Notepad का समान रूप से उपयोग कर सकते हैं लेकिन यदि आप करते हैं तो UTF-8 एन्कोडिंग के साथ बचत करना याद रखें!
डॉन क्रिकेशंक

3

मैं मैक एक्सेल पर इस समस्या के लिए एक VBA समाधान खोजने में सक्षम नहीं था। बस यूटीएफ -8 टेक्स्ट को आउटपुट करने का कोई तरीका नहीं लग रहा था।

इसलिए मुझे आखिरकार वीबीए को छोड़ देना पड़ा, बुलेट को गोली मार दी, और AppleScript सीखा। यह लगभग उतना बुरा नहीं था जितना मैंने सोचा था।

समाधान यहाँ वर्णित है: http://talesoftech.blogspot.com/2011/05/excel-on-mac-goodbye-vba-hello.html


3

Windows परिवेश को मानकर, फ़ाइल को हमेशा की तरह Excel में सहेजें और काम करें लेकिन फिर Gnome Gnumeric (free) में सहेजी गई Excel फ़ाइल खोलें। CSV के रूप में Gnome Gnumeric की स्प्रेडशीट को सहेजें - जो मेरे लिए वैसे भी - इसे UTF-8 CSV के रूप में सहेजता है।


3

इसे करने का आसान तरीका: ओपन ऑफिस ( यहां ) डाउनलोड करें , स्प्रेडशीट लोड करें और एक्सेल फाइल ( .xlsया .xlsx) खोलें । फिर बस इसे एक पाठ CSV फ़ाइल के रूप में सहेजें और एक विंडो खुलती है जो वर्तमान प्रारूप को रखने या एक .ODF प्रारूप के रूप में सहेजने के लिए कहती है। "वर्तमान प्रारूप रखें" का चयन करें और नई विंडो में उस विकल्प का चयन करें जो आपकी फ़ाइल के लिखे जाने की भाषा के अनुसार आपके लिए बेहतर है। स्पेनिश भाषा के लिए पश्चिमी यूरोप ( Windows-1252/ WinLatin 1) का चयन करें और फ़ाइल ठीक काम करती है। यदि आप यूनिकोड ( UTF-8) का चयन करते हैं , तो यह स्पेनिश वर्णों के साथ काम करने वाला नहीं है।


3
कोई कारण नहीं है कि यूटीएफ -8 स्पेनिश पात्रों के साथ काम नहीं करेगा।
फ्लिम

3
  1. Xls फ़ाइल (एक्सेल फ़ाइल) को यूनिकोड पाठ के रूप में सहेजें => फ़ाइल पाठ प्रारूप (.txt) में सहेजी जाएगी।

  2. .Txt से .csv के लिए प्रारूप बदलें। XYX.txt से XYX.csv पर फ़ाइल का नाम बदलें


3
यह काम नहीं करता है क्योंकि आपके निर्देशों में फ़ाइल डेटा में टैब को कॉमा में परिवर्तित करने का आवश्यक चरण शामिल नहीं है।
मैथ्यू रोडटस

1
एक्सेल का "यूनिकोड पाठ" यूटीएफ -16 है, न कि यूटीएफ -8 जैसा कि प्रश्न में पूछा गया है।
फ्लिम

3

मैं भी इसी समस्या को लेकर आया हूं लेकिन इसके लिए एक आसान उपाय है।

  1. Excel 2016 या उच्चतर में अपनी xlsx फ़ाइल खोलें।
  2. "इस रूप में सहेजें" इस विकल्प को चुनें: "(CSV UTF-8 (Comma Delimited) *। Csv)"

यह पूरी तरह से काम करता है और एक सीएसवी फ़ाइल उत्पन्न होती है जिसे किसी भी सॉफ्टवेयर में आयात किया जा सकता है। मैंने अपने SQLITE डेटाबेस में इस सीएसवी फ़ाइल को आयात किया और यह सभी यूनिकोड वर्णों के साथ पूरी तरह से काम करता है।


यह विकल्प Excel 2016 की मेरी प्रति में उपलब्ध नहीं है। क्या आप Office 365 संस्करण का उपयोग कर रहे हैं?
डॉन क्रिकेशांक

2

एक ही समस्या के पार आया और इस पोस्ट को देखा। उपरोक्त में से किसी ने भी मेरे लिए काम नहीं किया। अंत में मैंने अपने यूनिकोड .xls को .xml में परिवर्तित कर दिया (Save as ... XML स्प्रेडशीट 2003 चुनें) और इसने सही चरित्र का निर्माण किया। तब मैंने xml को पार्स करने के लिए कोड लिखा और अपने उपयोग के लिए सामग्री निकाली।


2

मैंने एक छोटी पायथन स्क्रिप्ट लिखी है जो यूटीएफ -8 में वर्कशीट निर्यात कर सकती है।

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

#!/usr/bin/env python

# export data sheets from xlsx to csv

from openpyxl import load_workbook
import csv
from os import sys

reload(sys)
sys.setdefaultencoding('utf-8')

def get_all_sheets(excel_file):
    sheets = []
    workbook = load_workbook(excel_file,use_iterators=True,data_only=True)
    all_worksheets = workbook.get_sheet_names()
    for worksheet_name in all_worksheets:
        sheets.append(worksheet_name)
    return sheets

def csv_from_excel(excel_file, sheets):
    workbook = load_workbook(excel_file,use_iterators=True,data_only=True)
    for worksheet_name in sheets:
        print("Export " + worksheet_name + " ...")

        try:
            worksheet = workbook.get_sheet_by_name(worksheet_name)
        except KeyError:
            print("Could not find " + worksheet_name)
            sys.exit(1)

        your_csv_file = open(''.join([worksheet_name,'.csv']), 'wb')
        wr = csv.writer(your_csv_file, quoting=csv.QUOTE_ALL)
        for row in worksheet.iter_rows():
            lrow = []
            for cell in row:
                lrow.append(cell.value)
            wr.writerow(lrow)
        print(" ... done")
    your_csv_file.close()

if not 2 <= len(sys.argv) <= 3:
    print("Call with " + sys.argv[0] + " <xlxs file> [comma separated list of sheets to export]")
    sys.exit(1)
else:
    sheets = []
    if len(sys.argv) == 3:
        sheets = list(sys.argv[2].split(','))
    else:
        sheets = get_all_sheets(sys.argv[1])
    assert(sheets != None and len(sheets) > 0)
    csv_from_excel(sys.argv[1], sheets)

मैंने कार्यान्वयन को थोड़ा अद्यतन किया है और एक gist.github.com/julianthome/2d8546e7bed869079ab0f409ae0faa87
Julian

2

एक्सेल आमतौर पर utf8 के बजाय एएनएसआई एन्कोडिंग के रूप में एक सीएसवी फ़ाइल बचाता है।

फ़ाइल को ठीक करने का एक विकल्प नोटपैड या नोटपैड ++ का उपयोग करना है:

  1. नोटपैड या नोटपैड ++ के साथ .csv खोलें।
  2. सामग्री को अपने कंप्यूटर क्लिपबोर्ड पर कॉपी करें।
  3. फ़ाइल से सामग्री हटाएं।
  4. फ़ाइल की एन्कोडिंग को utf8 में बदलें।
  5. क्लिपबोर्ड से सामग्री को वापस चिपकाएँ।
  6. फ़ाइल सहेजें।

एनपी ++ के पुराने संस्करणों के बारे में निश्चित नहीं है, लेकिन वर्तमान संस्करण में आप सिर्फ एनकोडिंग> यूटीएफ -8 में कन्वर्ट कर सकते हैं। चरण 2-5
फेलक

1

"Nevets1219" के लिए एक दूसरा विकल्प नोटपैड ++ में अपनी सीएसवी फ़ाइल खोलना और एएनएसआई के लिए एक रूपांतरण करना है।

शीर्ष मेनू में चुनें: एन्कोडिंग -> एएनएसआई में कनवर्ट करें


पता नहीं क्यों आपको नीचा दिखाया गया। नोटपैड ++ ने मेरे लिए किया। Google स्प्रेडशीट में मेरी फ़ाइल संग्रहीत नहीं कर सकता क्योंकि यह गोपनीय है।
ज़ैन

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

यह अब तक का आसान जवाब है IMO। मैं एक्सेल २०१६ का उपयोग कर रहा हूं और इसे डिफ़ॉल्ट रूप से एएनएसआई एन्कोडिंग में सहेजता हूं, लेकिन इसे यूटीएफ -8 में मिला, जो मुझे चाहिए था।
रोमियोको

1

एन्कोडिंग -> एएनएसआई में परिवर्तित करें यह एएनएसआई / यूएनआईसीओडीई में एन्कोड करेगा। Utf8 यूनिकोड का सबसेट है। शायद ANSI में सही ढंग से एनकोड किया जाएगा, लेकिन यहां हम UTF8, @SequenceDigitale के बारे में बात कर रहे हैं।

सीएसवी (अल्पविराम सीमांकित) के रूप में निर्यात करने और फिर नोटपैड ++ (मुक्त) के साथ उस सीएसवी को खोलने, फिर एनकोडिंग> यूटीएफ 8 में कनवर्ट करें। लेकिन केवल अगर आपको प्रति फ़ाइल एक बार ऐसा करना है। यदि आपको बदलने और निर्यात करने की आवश्यकता है, तो सबसे अच्छा है लिबरऑफिस या GDocs समाधान।


5
"Utf8 यूनिकोड का सबसेट है": इसका कोई मतलब नहीं है। यूटीएफ -8 यूनिकोड का एक कूटबन्धन है।
जम्फिशर

मुझे यकीन नहीं है कि मुझे यह "एन्कोडिंग -> कन्वर्ट एएनआई" विकल्प मिल सकता है।
फ्लिम

बस नोटपैड ++ में एक एएनएसआई सीएसवी और फ़ाइल के एन्कोडिंग को यूएफ 8 में बदलने से मूल गैर-एससीआई स्पेनिश वर्णों को एनकोड स्ट्रिंग्स में परिवर्तित किया जा सकता है जो मूल पाठ से मेल नहीं खाते हैं।
जेसन विलियम्स

1

Microsoft Excel में यूनिकोड एन्कोडिंग का उपयोग करके स्प्रेडशीट निर्यात करने का विकल्प है। स्क्रीनशॉट के बाद देखें।

यहाँ छवि विवरण दर्ज करें


14
"यूनिकोड पाठ" UTF-16 LE (लिटिल एंडियन) में बचाता है, न कि UTF-8 में ओपी द्वारा पूछा गया।
कुल्हाड़ी।

हां, लेकिन यह एक्सेल में आपके एक्स-अलग-मूल्यों के लिए यूनिकोड समर्थन प्राप्त करने का सबसे अच्छा तरीका है। मेरे पास Excel को UTF-8 के साथ गेंद खेलने के लिए हर तरह की समस्याएँ हैं! और पढ़ें
mcNux

1

नोटपैड + के साथ .csv ठीक खोलें। यदि आप देखते हैं कि आपका एन्कोडिंग अच्छा है (आप सभी वर्णों को देखें जैसा कि उन्हें होना चाहिए) एन्कोडिंग दबाएं, फिर एएनएसआई को और बदलें - पता करें कि आपका वर्तमान एन्कोडिंग क्या है


मेरे लिए काम किया .. ग्रीक पात्रों के साथ समस्या थी जब csm के रूप में Exportmysql db और इसे एक्सेल में आयात किया ..
nikolas

1
इसके साथ समस्या यह है कि आप पहली बार में CSV फ़ाइल कैसे बनाते हैं। यदि आप केवल एक्सेल में CSV फ़ाइल के रूप में सहेजते हैं, तो यह cp1252 में बचाएगा, जो कि एक-बाइट-प्रति-कोड-पॉइंट एन्कोडिंग है, और इसलिए जानकारी खो देता है।
फ्लिम

1

एक अन्य उपाय यह है कि फाइल को विनवर्ड द्वारा खोलें और इसे txt के रूप में सहेजें और फिर इसे एक्सेल द्वारा फिर से खोलें और यह आईएसए को काम देगा


1

डायलॉग> टूल बटन> वेब विकल्प> टैब एन्कोडिंग सहेजें


यह मेरे लिए काम नहीं करता है। जिस तरह से मैं इसे समझता हूं यह केवल एक वेब प्रारूप (एचटीएमएल आदि) के रूप में सहेजते समय प्रभावी होता है, सीएसवी के रूप में बचत करते समय नहीं।
जोगोजपन

मेरे लिए काम करता है - कार्यालय 2007
एलिया वीस

किसी भी CSV प्रोफ़ाइल को चुनने के लिए कार्यालय 2010 पर काम नहीं कर रहा है।
हार्ट

0

मेरे पास एक ही समस्या है और इस ऐड में आ जाओ , और यह एक्सेल 2007 और 2010 के बगल में एक्सेल 2013 में पूरी तरह से ठीक काम करता है जिसके लिए यह उल्लेख किया गया है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.