2

何よりもまず、事前に助けてくれてありがとう。私は完全なプログラミング初心者であり、私のコードはそれを反映しています。私がやろうとしていることを説明し、コードを表示しようとします。繰り返しますが、あなたの時間と説明に感謝します。

目的: Python で既存の Excel ファイル (output.xls) を開き、そのドキュメントの次の利用可能な行に値 (この場合は「テスト テキスト」) を入力したいと考えています。「while」ループと「if」ステートメントを使用してこれを実行しようとしました。どちらもエラーを返しませんが、どちらも出力を 2 行目以降に正しく移動できません。これが私が持っているものです。

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 を入力) ということです。次に、行に 1 を追加して繰り返します。IE: 4 列目の空白行に到達するまで続けます。

while cell.ctype != 6:
    row = row + 1

ws.write(row,4,a)

ここで、結果を確認したいと思います。

print cell.ctype
rb.save('output.xls')

とにかく、コードを実行すると、最初の行を通過していないようです。コードが「よし、最初のセルはタイプ 6 ではない」と言っているようですが、それを通り越すことはできません。ネットで何時間も検索しても、その理由を見つけることができないようです。

ヘルプ/ガイダンスは非常に高く評価されています。

- - 編集 - -

提案された応答に対して受け取ったエラーは次のとおりです。エラーは同じです。

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
4

2 に答える 2

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
于 2014-01-09T09:42:56.530 に答える
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>

個人的には、あなたの走りは速すぎるように感じます。基本を学ばずに深く掘り下げようとしている

于 2014-01-09T09:42:47.390 に答える