مشكلة DateTime مع XLRD و XLWT Python libs
سؤال
أحاول كتابة بعض التواريخ من جدول بيانات Excel إلى آخر. حاليًا ، أحصل على تمثيل في Excel ليس ما أريده تمامًا: "40299.2501157407"
يمكنني الحصول على تاريخ الطباعة بشكل جيد إلى وحدة التحكم ، ولكن لا يبدو أنه يعمل في الكتابة بشكل صحيح إلى جدول بيانات Excel - يجب أن تكون البيانات نوعًا من التاريخ في Excel ، لا يمكنني الحصول على إصدار نصي منه.
إليك الخط الذي يقرأ التاريخ في:
date_ccr = xldate_as_tuple(sheet_ccr.cell(row_ccr_index, 9).value, book_ccr.datemode)
إليك الخط الذي يكتب التاريخ:
row.set_cell_date(11, datetime(*date_ccr))
لا يوجد أي شيء حتى الآن بين هذين الخطين بخلاف مقارنات قليلة.
أيه أفكار؟
المحلول
يمكنك كتابة رقم النقطة العائمة مباشرة إلى جدول البيانات وتعيين تنسيق الأرقام للخلية. اضبط التنسيق باستخدام num_format_str
من XFStyle
كائن عند كتابة القيمة.
https://secure.simplistix.co.uk/svn/xlwt/trunk/xlwt/doc/xlwt.html#xlwt.worksheet.write-method
المثال التالي يكتب التاريخ 01-05-2010. (يتضمن أيضًا وقت 06:00:10 ، ولكن هذا مخفي بالتنسيق المختار في هذا المثال.)
import xlwt
# d can also be a datetime object
d = 40299.2501157407
wb = xlwt.Workbook()
sheet = wb.add_sheet('new')
style = xlwt.XFStyle()
style.num_format_str = 'DD-MM-YYYY'
sheet.write(5, 5, d, style)
wb.save('test_new.xls')
هناك أمثلة على تنسيقات الأرقام (num_formats.py) في مجلد الأمثلة من رمز مصدر XLWT. على جهاز Windows الخاص بي: C: Python26 lib site-packages xlwt أمثلة
يمكنك قراءة حول كيفية تواريخ متاجر Excel (القسم الثالث في هذه الصفحة): https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html