كيف تقرأ قيمة الخلية من ملف OpenOffice Calc .ods؟

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

  •  02-10-2019
  •  | 
  •  

سؤال

لقد تمكنت من قراءة قيمة خلية Excel مع XLRD باستخدام أرقام العمود والصف كإدخال. الآن أحتاج إلى الوصول إلى نفس قيم الخلايا في بعض جداول البيانات التي تم حفظها بتنسيق .ods.

على سبيل المثال ، كيف أقرأ مع Python القيمة المخزنة في الخلية E10 في ملف .ods؟

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

المحلول

اختراق طريقك من خلال XML لا ينبغي كن صعبًا جدًا ... ولكن هناك مضاعفات. مثال واحد فقط: قرر OOO في حكمتهم عدم كتابة عنوان الخلية بشكل صريح. لا توجد سمة خلية مثل address="E10" أو column="E"; ؛ تحتاج إلى حساب الصفوف والأعمدة.

يتم تمثيل خمس خلايا فارغة متتالية
<table:table-cell table:number-columns-repeated="5" />

ال number-colums-repeated تنسب الإعدادات الافتراضية إلى "1" وتنطبق أيضًا على الخلايا غير الفارغة.

يزداد الأمر سوءًا عندما تكون قد قمت بدمج الخلايا ؛ تحصل على covered-table-cell علامة 90 ٪ مثل table-cell العلامة والسمات number-columns-spanned و number-rows-spanned يجب أن يتم احتسابها في العمود والصف.

أ table:table-row قد يكون للعلامة ملف number-rows-repeated ينسب. يمكن استخدام هذا لتكرار محتويات صف غير فارغ كامل ، ولكن في أغلب الأحيان يتم رؤيته عندما يكون هناك أكثر من صفوف فارغة متتالية.

لذلك ، حتى لو كنت راضيًا عن نهج "أعمالك على بياناتي" ، فهذا ليس تافهاً.

قد ترغب في النظر إلى odfpy. لاحظ الجملة الثانية: "" "على عكس واجهات برمجة التطبيقات الأخرى الأكثر ملاءمة ، فإن هذه الطبقة هي في الأساس طبقة تجريد فوق تنسيق XML. بالنسبة إلى ODT) قد يكون من الممكن أن تحصل على ما تريد.

إذا كنت تفضل "أعمالًا على بيانات الجميع تقريبًا وتم دعمها ولديها واجهة تعرفها" ، فقد تحتاج إلى الانتظار حتى يتم وضع الوظيفة في xlrd ... لكن هذا لن يحدث قريبًا.

نصائح أخرى

من المكتبات التي جربتها ezodf كان الذي عمل.

from ezodf import opendoc, Sheet
doc = opendoc('test.ods')
for sheet in doc.sheets:
   print sheet.name
   cell = sheet['E10']
   print cell.value
   print cell.value_type

Pyexcel-ODS تحطم, ، odfpy تحطم بالإضافة إلى ذلك ، فإن وثائقها إما مفقودة أو فظيعة.

بالنظر إلى أن المكتبات العاملة المفترضة توفيت على الملف الأول الذي اختبرته ، أفضل تجنب كتابة المعالجة الخاصة بي في وقت أقرب أو آجلاً ، إما أن تعطل أو ما هو أسوأ فشل بصمت على بعض المواقف الغرب.

تحرير: يزداد سوءًا. مايوف مايو إرجاع بيانات زائفة بصمت.

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