لماذا تفشل حلقة Python هذه في الإخراج إلى صف Excel التالي المتاح؟
سؤال
اولا في المقام الاول اولا قبل كل شي:شكرا على أي مساعدة مقدما.أنا مبتدئ في البرمجة، وسيعكس الكود الخاص بي ذلك.سأحاول وصف ما أحاول القيام به، وعرض الرمز.مرة أخرى، أشكركم على وقتك والتوضيحات.
الهدف: أريد أن أطلب من لغة python فتح ملف Excel موجود (output.xls)، وإدخال قيمة (في هذه الحالة، "نص اختباري") إلى الصف التالي المتاح في ذلك المستند.لقد حاولت استخدام حلقة "أثناء" وعبارة "إذا" لإنجاز ذلك.على الرغم من عدم إرجاع أي أخطاء، إلا أن كلاهما يفشل في نقل الإخراج بشكل صحيح بعد السطر الثاني.وهنا ما لدي.
from xlrd import open_workbook
from xlutils.copy import copy
import xlwt
wb = open_workbook('output.xls',formatting_info=True)
sheet = wb.sheet_by_name("sheet 1")
#This is the simple test text here.
a = 'just a test'
rb = copy(wb)
ws = rb.get_sheet(0)
row = 0
cell = sheet.cell(row,4)
ما أحاول قوله أدناه هو -بينما- الخلية ليست فارغة (اكتب 6)، ثم قم بإضافة خلية إلى الصف وكرر الأمر.أي:استمر في ذلك حتى تصل إلى صف فارغ في العمود الرابع.
while cell.ctype != 6:
row = row + 1
ws.write(row,4,a)
وهنا، آمل أن أتأكد من النتائج.
print cell.ctype
rb.save('output.xls')
بغض النظر، عندما أقوم بتشغيل الكود، لا يبدو أنه تجاوز السطر الأول.يبدو الأمر كما لو أن الكود يقول، "رائع، الخلية الأولى ليست من النوع السادس،" لكنها لا تتجاوز ذلك.على الرغم من ساعات البحث على الشبكة، يبدو أنني لا أستطيع العثور على سبب لذلك.
أي مساعدة / توجيه هو موضع تقدير كبير.
--- يحرر ---
إليك الأخطاء التي أتلقاها في الردود المقترحة.الخطأ متطابق.
Traceback (most recent call last):
File "C:\Users\Administrator\Desktop\Folder", line 19, in <module>
cell = sheet.cell(row,4)
File "C:\Python27\lib\site-packages\xlrd\sheet.py", line 395, in cell
xfx = self.cell_xf_index(rowx, colx)
File "C:\Python27\lib\site-packages\xlrd\sheet.py", line 421, in cell_xf_index
xfx = self._cell_xf_indexes[rowx][colx]
IndexError: list index out of range
المحلول
لن تنتقل أبدًا إلى الخلية التالية.مجرد تغيير المتغير row
لا يؤثر cell
.جرب هذا الكود بدلا من ذلك:
cell = sheet.cell(row,4)
while cell.ctype != 6:
row = row + 1
if row >= sheet.nrows:
break
cell = sheet.cell(row,4) # <-- actually move the "pointer" in the excel sheet
نصائح أخرى
لديك مؤشر الصف المتقدمة - لكنك لا تقرأ خلية جديدة، لذلك تظل خليةك هي نفسها، وتدخل حلقة لا نهاية لها
giveacodicetagpre. يجب أن تعمل
تحرير:
أنت تحصل على نفاد الصفوف - ثابتة بسهولة
giveacodicetagpre.شخصيا، لدي شعور بأنك يعمل بسرعة كبيرة - أنت تحاول الحصول على أساس عميق دون أساسيات التعلم