excel मार्कशीट - यूटीएफ 8 एन्कोडिंग के साथ एक्सेल से सीएसवी




सूत्र उन्नत (25)

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

चूंकि सीएसवी सिर्फ एक टेक्स्ट फ़ाइल है, मुझे यकीन है कि यह एक यूटीएफ 8 एन्कोडिंग को संभाल सकता है, इसलिए मुझे लगता है कि यह एक एक्सेल सीमा है, लेकिन मैं Excel से CSV तक पहुंचने और गैर-ASCII वर्णों को रखने का एक तरीका ढूंढ रहा हूं बरकरार।


Answers

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


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

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

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

(अपने एन्कोडिंग के साथ सीपी 1250 को प्रतिस्थापित करना याद रखें)।

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


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

  2. .txt से .csv में प्रारूप बदलें (XYX.txt से XYX.csv तक फ़ाइल का नाम बदलें


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


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

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

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

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


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


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


एन्कोडिंग -> Ansi में कनवर्ट करें इसे एएनएसआई / यूनिकोड में एन्कोड करेगा। यूटीएफ 8 यूनिकोड का सबसेट है। शायद एएनएसआई में सही ढंग से एन्कोड किया जाएगा, लेकिन यहां हम यूटीएफ 8, @ सिकेंसडिजिटल के बारे में बात कर रहे हैं।

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


मैंने एक छोटी पायथन लिपि लिखी है जो यूटीएफ -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)

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

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

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


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

Catdoc स्थापित करें:

apt-get install catdoc

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

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

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

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

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


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


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

  1. अपनी फ़ाइल को "यूनिकोड टेक्स्ट फ़ाइल" के रूप में सहेजें;
  2. अब आपके पास एक यूनिकोड टेक्स्ट फ़ाइल है
  3. "utepad" के साथ इसे खोलें और "utf-8" या अन्य कोड पेज को चुनने के साथ "इसे सहेजें" के साथ खोलें
  4. "txt" से "csv" में फ़ाइल एक्सटेंशन का नाम बदलें

वैसे भी एमएस-ऑफिस के साथ इसे न खोलें !!! अब आपके पास एक टैब सीमवी फ़ाइल सीमित है।


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

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

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

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


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

1. एक्सेल से सहेजें

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

2. PowerShell शुरू करें

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

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

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

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

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

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


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


पावरहेल का उपयोग करने के बारे में क्या।

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

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

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

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

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

परिणामी फाइल यूटीएफ -8 में होगी


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

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


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

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

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


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

(1) एक एक्सेल फ़ाइल खोलें जहां आपके पास जानकारी है (.xls, .xlsx)

(2) एक्सेल में, "सीएसवी (कॉमा डिलीमिटेड) (* .csv) फ़ाइल प्रकार के रूप में चुनें और उस प्रकार के रूप में सहेजें।

(3) नोटपैड में ("प्रोग्राम" और फिर स्टार्ट मेनू में सहायक उपकरण के अंतर्गत पाया गया), नोटपैड में सहेजी गई .csv फ़ाइल खोलें

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

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

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


विंडोज वातावरण को मानते हुए, Excel में सामान्य रूप से फ़ाइल के साथ सहेजें और काम करें, लेकिन फिर जीनोम जीन्यूमेरिक (फ्री) में सहेजी गई एक्सेल फ़ाइल खोलें। जीनोम ग्न्यूमेरिक की स्प्रैडशीट को सीएसवी के रूप में सहेजें - मेरे लिए वैसे भी - इसे यूटीएफ -8 सीएसवी के रूप में बचाता है।


रूबी> = 1.9 के साथ आप इसका उपयोग कर सकते हैं

file_contents = CSV.read("csvfile.csv", col_sep: "$", encoding: "ISO8859-1:utf-8")

ISO8859-1:utf-8 9 ISO8859-1:utf-8 का अर्थ है: सीएसवी-फाइल आईएसओ 885 9 -1 है - एनकोडेड, लेकिन सामग्री को यूटीएफ -8 में कनवर्ट करें

यदि आप अधिक वर्बोज़ कोड पसंद करते हैं, तो आप इसका उपयोग कर सकते हैं:

file_contents = CSV.read("csvfile.csv", col_sep: "$", 
    external_encoding: "ISO8859-1", 
    internal_encoding: "utf-8"
  )




excel encoding csv utf-8