Python: передача переменной в Range()

Привет и спасибо заранее.

Использование Python 3.4 в Visual Studio 2015 для чтения/записи из Excel 2007

Глядя на передачу переменной:

mylastrow ='$A$70006' # this address is not hard coded. it will be from an 'input'

Присоединение вышеуказанного диапазона к приведенному ниже выражению - это то, в чем я терплю неудачу:

myrange = xlwings.Range('Sheet1', 'A2:' & lastrow).value

Я пробовал это:

myrange = xlwings.Range('Sheet1', 'A2:' & lastrow)
myrange = xlwings.Range('Sheet1', 'A2:' + lastrow).value
myrange = xlwings.Range('Sheet1', 'A2:' + lastrow)
myrange = xlwings.Range('Sheet1', 'A2:' & str(lastrow)).value
myrange = xlwings.Range('Sheet1', 'A2:' & int(lastrow)).value
myrange = xlwings.Range('Sheet1', 'A2:' + str(lastrow)).value
myrange = xlwings.Range('Sheet1', 'A2:' + int(lastrow)).value
myrange = xlwings.Range('Sheet1', 'A2', 'A' & lastrow).value
myrange = xlwings.Range('Sheet1', 'A2', 'A' & lastrow).value

Я продолжаю получать: "неподдерживаемые типы операндов для &:"str" ​​и "int" или "невозможно неявно преобразовать объект "int" в str"

Конечно, после того, как они вместе, адрес должен выглядеть как A2:$A$70006.

Даже если у вас есть просто ссылка на список возможных обходных путей или просто «это невозможно сделать». Все будет хорошо. Еще раз спасибо.

пс. Что касается самого форума, если бы я должен был представить это по-другому или структурировать это по-другому, пожалуйста, дайте мне знать, чтобы я мог это исправить. еще раз спасибо.


person Jim    schedule 20.03.2016    source источник


Ответы (1)


Попробуй это

mylastrow ='$A$70006'
...
myrange = xlwings.Range('Sheet1', 'A2:{0}'.format(mylastrow)).value

Подробнее об форматировании строк Python 3 можно прочитать здесь. .

person Ance    schedule 20.03.2016
comment
Привет Анс. Это сработало. Я благодарю вас и собираюсь узнать, как работает format(), чтобы в будущем извлечь из этого максимальную пользу. Спасибо. Пс. Я пробовал: Range('Sheet1','A2:%s' % lastrow) и Range('Sheet1','A2:A %d' % lastrow), где 'lastrow' = 70006, но ничего не работало. Большое спасибо. - person Jim; 21.03.2016
comment
Это форматирование строки% также может работать, если вы используете его как Range('Sheet1','A2:%s' % str(mylastrow)).value, но тогда вы должны позаботиться о передаче правильного типа параметра (число, нить, ...). Этот str.format() больше похож на способ python 3 сделать это. В любом случае, нет проблем, и я рад помочь Вам :) - person Ance; 21.03.2016
comment
@ Джим, возможно, вы захотите использовать возможность xlwngs обращаться к индексам ячеек, а не к адресам, например: Range((1,1),(10,10)) - person Felix Zumstein; 25.03.2016