كيفية تحديد موقع Ranges (Global ، ND Per-Worksheet) باستخدام XLRD ، Python؟
-
02-10-2019 - |
سؤال
الوثائق ل 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
(أي الصف أو العمود بأكمله).