データのある列の最後の行を見つけようとしています。vba 関数を置き換えるには:LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row
これを試していますが、これにより Excel のすべての行が取り込まれます。どうすれば最後の行を取得できますか。
from xlwings import Workbook, Range
wb = Workbook()
print len(Range('A:A'))
データのある列の最後の行を見つけようとしています。vba 関数を置き換えるには:LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row
これを試していますが、これにより Excel のすべての行が取り込まれます。どうすれば最後の行を取得できますか。
from xlwings import Workbook, Range
wb = Workbook()
print len(Range('A:A'))
これは、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
直感的に、この関数はブック内の最も右下にあるセルを見つけることから始めます。次に、選択した列に移動し、最初の空でないセルに到達するまで上に移動します。
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)
これを試して:
import xlwings as xw
cellsDown = xw.Range('A1').vertical.value
cellsRight = xw.Range('A1').horizontal.value
print len(cellsDown)
print len(cellsRight)