12

データのある列の最後の行を見つけようとしています。vba 関数を置き換えるには:LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row

これを試していますが、これにより Excel のすべての行が取り込まれます。どうすれば最後の行を取得できますか。

from xlwings import Workbook, Range
wb = Workbook()
print len(Range('A:A'))
4

7 に答える 7

4

これは、crazymachu の answer とほぼ同じで、関数にまとめられているだけです。xlwings のバージョン 0.9.0 以降、これを行うことができます。

import xlwings as xw

def lastRow(idx, workbook, col=1):
    """ Find the last row in the worksheet that contains data.

    idx: Specifies the worksheet to select. Starts counting from zero.

    workbook: Specifies the workbook

    col: The column in which to look for the last cell containing data.
    """

    ws = workbook.sheets[idx]

    lwr_r_cell = ws.cells.last_cell      # lower right cell
    lwr_row = lwr_r_cell.row             # row of the lower right cell
    lwr_cell = ws.range((lwr_row, col))  # change to your specified column

    if lwr_cell.value is None:
        lwr_cell = lwr_cell.end('up')    # go up untill you hit a non-empty cell

    return lwr_cell.row

直感的に、この関数はブック内の最も右下にあるセルを見つけることから始めます。次に、選択した列に移動し、最初の空でないセルに到達するまで上に移動します。

于 2016-09-14T11:39:28.387 に答える
2

Direction一番下から始めて上に移動して、使用を試すことができます。

import xlwings
from xlwings.constants import Direction
wb = xlwings.Workbook(r'data.xlsx')
print(wb.active_sheet.xl_sheet.Cells(65536, 1).End(Direction.xlUp).Row)
于 2016-03-18T10:47:09.393 に答える
1

これを試して:

import xlwings as xw

cellsDown = xw.Range('A1').vertical.value

cellsRight = xw.Range('A1').horizontal.value

print len(cellsDown)

print len(cellsRight)
于 2016-03-14T20:54:59.053 に答える