كيفية تحديد موقع Ranges (Global ، ND Per-Worksheet) باستخدام XLRD ، Python؟

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

سؤال

الوثائق ل xlrd هناhttp://www.python-excel.org/يذكر أنه ممكن الآن في أحدث إصدار ، لكنه لا يقول كيف.

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

المحلول

لست متأكدًا مما تقرأه بالفعل ؛ كان وصول XLRD إلى النطاقات المسماة متاحًا منذ عدة سنوات (في الإصدار 0.6.0 ؛ أحدث إصدار هو 0.7.1) ويأتي مع الوثائق الكاملة ab initio.

هذا هو رابط توثيق XLRD هذا يعطى على http://www.python-excel.org/ الصفحة التي ذكرتها. ضرب Pagedown مرتين ويجب أن ترى قسما يتجه المراجع المسماة ، الثوابت ، الصيغ ، وحدات الماكرو. هذا يعطي نظرة عامة ويشير إلى توثيق Book.name_* الأساليب و Name كائن ، وإلى نص عرض.

لاحظ أن هذا هو إصدار Trunk SVN من الوثائق ويطبق على إصدار مستقبلي ؛ قد يذكر طريقة واحدة إضافية لا تتوفر في الإصدار الحالي من XLRD (والذي يمكنك الحصول عليه من Pypi) والذي يتضمن ملف الوثائق ذات الصلة.

تحديث رداً على "" "" لقد وصلت إلى هذا الحد: somerange = book.name_map [u'somerange '] [0] والآن أريد أن أتكرر عليه ، والاستيلاء على القيم ، والحصول على أبعاده ، وما إلى ذلك. ماذا أفعل الآن؟ جربت دير (سومرانج) ومساعدة (Somerange) ولم يساعد كثيرًا. "" "

ما تسميه someRange هو مثال Name صف دراسي. تحتاج إلى قراءة توثيق تلك الفئة. سيساعدك إذا كنت تقرأ البرنامج النصي التظاهر xlrdnameapidemo.py وحاول تشغيله على ملف (ملفات) XLS. لاحظ أن "الحصول على أبعادها" يسبق منطقيا "تكراره ، والقيمة الاستيلاء" ؛ طريقة الراحة Name.area2d قد يكون ما تحتاجه.

نصائح أخرى

إنها ليست تافهة وعملت في حالتي فقط على XLS No XLSX (ربما لأنه على XLSX الخاص بي name.evaluated == 0):

name = book.name_map['my_named_range'][0]
assert name.result.kind == xlrd.oREF
ref3d = name.result.value[0]
for sheet_index in range(ref3d.shtxlo, ref3d.shtxhi):
    sheet = book.sheet_by_index(sheet_index)
    for row in range(ref3d.rowxlo, min(ref3d.rowxhi, sheet.nrows)):
        for col in range(ref3d.colxlo, min(ref3d.colxhi, sheet.ncols)):
            cell = sheet.cell(row, col)
            # TODO: Do something with that cell.

تريد الحد من عدد الأعمدة والصفوف في الورقة في حالة مثل النطاق الخاص بك A:A أو 1:1 (أي الصف أو العمود بأكمله).

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