首先:感谢您提前提供任何帮助。我是一个完全编程的新手,我的代码将反映出来。我将尝试描述我正在尝试做的事情,并显示代码。再次感谢您的时间和解释。
目标:我想让python打开现有的excel文件(output.xls),并输入一个值(在本例中为'test text')到下一个可用行在那份文件中。我试图使用'while'循环和'if'语句来完成这项工作。虽然两者都没有返回错误,但它们都无法正确地将输出移过第二行。这就是我所拥有的。
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)
下面我要说的是 -WHILE - 单元格不是空白(类型6),然后在行中添加一个并重复。 IE:继续前进,直到你在第四栏中出现空白行。
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
答案 0 :(得分:2)
你永远不会移动到下一个单元格。只更改变量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
答案 1 :(得分:1)
您提前行索引 - 但是您没有读取新单元格,因此您的单元格保持不变,并且您进入无限循环
while cell.ctype != 6:
row = row + 1
cell = sheet.cell(row,4)
应该有效
修改强>
你的行已经不多了 - 很容易修复
try:
while cell.ctype != 6:
row = row + 1
cell = sheet.cell(row,4)
except IndexError:
<do something>
就我个人而言,我觉得你跑得太快 - 你试图在没有学习基础知识的情况下变得太深了