باستخدام XLRD لقراءة ملف Excel XLS يحتوي على أحرف صينية و/أو هندية

StackOverflow https://stackoverflow.com/questions/3511743

  •  29-09-2019
  •  | 
  •  

سؤال

http://scienceoss.com/read-excel-files-from-python/comment-page-1/#comment-1051

من الرابط أعلاه ، استخدمت هذه الأداة المساعدة لقراءة ملف XLS. إذا كان ملف XLS يحتوي على أحرف لغة مختلفة مثل الصينية أو الهندية ، فإنه لا يخرجها بشكل صحيح. هل هناك حل بديل لهذا؟

بعد غوغلينغ ، وجدت هذا:

import xlrd

def upload_xls(dir,file,request):
    try:
        global msg
        global row_num
        row_num = []
        header_arr = []
        global file_path
        file_path = dir
        #reader = csv.reader(open(file), delimiter='#', quotechar='"')
        book = xlrd.open_workbook('dodgy.xls',encoding='cp1252')   ##To specify UTF8-encoding
        wb.sheet_names()
        sh =  wb.sheet_by_index(0)
        valid_xl_format = 0
        invalid_xl_format = 0
     except:
        print "Error

ولكن هناك خطأ في السطر book = open_workbook('dodgy.xls',encoding='cp1252'):

TypeError: open_workbook() got an unexpected keyword argument 'encoding'

هل كانت مفيدة؟

المحلول

حسب XLRD توثيق الوحدة النمطية, ، المعلمة الصحيحة هي: encoding_override = "CP1252" و لا الترميز = "CP1252".

من الطريقة التي تقوم بها باستيراد وحدة XLRD ، يجب أن تتصل بالوظيفة على أنها xlrd.open_workbook ولكن في رمز المثال ، يمكنك استخدام الوظيفة مباشرة ، كما لو كنت قد استخدمت "من XLRD Import *".

نصائح أخرى

ديس] المطالب: أنا مؤلف كتاب XLRD.

إذا كانت XLS تحتوي على أحرف لغة مختلفة مثل chine أو hindi.it لا تخرج الكلمات الدقيقة. هل هناك عمل حول هذا ..

يتم استخدام وسيطة isoding_override (كما هو موضح في الوثائق) فقط للملفات القديمة (التي تنتجها Excels قبل Excel 97 (هذا هو عام 1997)) وعندها فقط عندما تكون "codepage" المسجلة داخليًا مفقودة أو غير صحيحة.

ملاحظة: يتم ضمان الملف القديم ذو الأحرف الصينية: تجاوز "CP1252" لرفع استثناء.

ملاحظة: الشخص القديم مع "Hindi" (Devanagari؟) الشخصيات: من غير المرجح للغاية ... بقدر ما أعرف أنه لم يكن هناك قطار مدعوم رسميًا لأي من البرامج النصية ISCII ، ولم أسمع عن أي واحد غير رسمي. أي معلومات حول هذا الموضوع و/أو نموذج الملفات ستكون موضع ترحيب كبير.

Excel 97 والإصدارات الأحدث تسجل جميع البيانات النصية في (بشكل فعال) UTF-16LE. يتم تجاهل encoding_override إذا كان الملف ملف Excel-97-OR-Later صالح.

أيا كان إصدار Excel الذي أنتج الملف ، (كما هو موثق) XLRD إرجاع سلاسل Unicode. من المرجح أن تكون مشاكلك مرتبطة بكيفية عرض أو تحويل سلاسل Unicode هذه.

لمزيد من المساعدة ، قم بتحرير سؤالك لإظهار أمثلة على الإخراج الفعلي مع "الصياغة الدقيقة".

هناك وحدة CSV في المكتبة القياسية ، والتي تتعامل مع Unicode في Python 3.1.

تحذير: في Python 2.x تقوم مكتبة CSV ليس التعامل مع Unicode.

هناك سؤال مماثل. كان الجواب كان الإخراج يسبب مشكلة ، وليس XLRD.

أجب على كيفية تعيين البرنامج النصي الخاص بك على UTF -8 ->https://stackoverflow.com/a/17628350/713

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top