首先也是最重要的:提前感谢您的任何帮助。我是一个完全编程新手,我的代码将反映这一点。我将尝试描述我试图做什么,并显示代码。再次感谢您的时间和解释。

目标: 我想让python打开现有的excel文件(输出。xls),并输入一个值(在这种情况下,'测试文本')到该文档中的下一个可用行。我尝试使用'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)

下面我想说的是 -虽然- 单元格不是空白(键入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

其他提示

您推进了行索引 - 但您没有读取一个新的单元格,因此您的单元格保持不变,并且您输入无限循环

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>
. 亲自,我有一种感觉,你的跑步太快了 - 你试图在没有学习基础的情况下变得太深

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top