openpyxl создает функцию, которая ссылается на ячейку на другом листе

Я только начал работать с openpyxl пару дней назад, и это отличная библиотека. Тем не менее, документация, по-видимому, скудна для расширенных функций. У меня есть пара проблем.

  1. openpyxl, кажется, меняет формулу, которую я вставляю, на нижний регистр, что приводит к неизвестной ссылке из excel.
  2. кроме того, я изменил имя листа, чтобы оно соответствовало нижнему регистру, и все же нашел #NAME? ошибка в ячейке, где была ссылка.

Может кто-нибудь показать мне, как или где узнать, как ссылаться на ячейку с другого листа в openpyxl

import openpyxl.Workbook
wb = Workbook()
ws = wb.get_active_sheet()
#shows up lowercase with name error in excel
ws.cell('A1).value = "$'Sheet'.E7 + 123"
#still shows a name error in excel
ws.cell('A2').value = "$'sheet'.E7 + 123"

person Nicholas Smith    schedule 14.08.2013    source источник


Ответы (2)


Попробуй это:

from openpyxl import Workbook
wb = Workbook()

ws = wb.create_sheet()
ws.title ='NewSheet'
ws.cell('E7').value = 7

ws = wb.create_sheet()
ws.cell('A1').value = "=NewSheet!E7 + 123"

wb.save( filename = 'temp2.xlsx' )
person Brad    schedule 21.08.2013
comment
Спасибо, я сделал пример Google Colab с более поздним openpyxl. Работает нормально, но пришлось немного изменить синтаксис ????. colab.research.google.com/drive/ - person GabLeRoux; 21.04.2020

from openpyxl import Workbook, utils
wb = Workbook()

ws = wb.create_sheet()
ws.title ='NewSheet'
ws.cell('E7').value = 7

ws = wb.create_sheet()
ws.cell('A1').value = f"={utils.quote_sheetname(ws.title)}!E7 + 123"

wb.save( filename = 'temp2.xlsx' )

Проблема с предыдущим ответом заключается в том, что он зависит от названия листа «NewSheet». Использование quote_sheetname()управляет этим.

person ohduran    schedule 17.01.2019
comment
Ваш ответ нашел позже, но в моем случае работает так: ws.cell('E7').value = f='{ws.title}'!$E7+123 Я использую оба! и $, - person Nick; 13.10.2020