Я хочу автоматически установить ширину столбца Excel с помощью модуля openpyxl, но некоторые данные являются формальными. Как получить реальную стоимость через Python? - PullRequest
0 голосов
/ 13 апреля 2019

Я создаю PY-скрипт для извлечения данных из моей базы данных и создания электронной таблицы Excel. Сценарий PY использует несколько разных модулей, но речь идет о pandas и openpyxl . Я хотел бы иметь возможность автоматически подбирать ширину столбцов для всех столбцов аналогично тому, как это делается в Excel (на основе содержимого). Проблема в том, что некоторые данные используют формулы для ответов на некоторые распространенные вопросы анализа данных, например «Сколько уникальных ключевых слов?», И, насколько мне известно, openpyxl действительно не любит формулы.

Я просмотрел много переполнения стека, и я думаю, что наиболее близким к тому, что мне хотелось бы, является что-то вроде этого: Как получить доступ к реальному значению ячейки с помощью модуля openpyxl для python . Тем не менее, ни один из опций (включая вышеописанный), которые я пробовал, не работал.

Следующий код является одним из методов, которые я пробовал:

writer = pandas.ExcelWriter(file_name, engine = "openpyxl")
writer.book = openpyxl.load_workbook(file_name, data_only = True)
writer.sheets = dict((ws.title, ws) for ws in writer.book.worksheets)
lastRow = worksheet.max_row

worksheet['L1'] = f"=\"Count of Unique Keywords = \"&sum(--(frequency(match(A2:A{lastRow},A2:A{lastRow},0),row(A2:A{lastRow})-row(A2)+1)>0))"

print (worksheet['L1'].value)

С помощью приведенного выше кода, я надеюсь получить из печати: Количество уникальных ключевых слов = 123

Но вместо этого я получаю функцию Excel:

="Count of Unique Keywords = "&sum(--(frequency(match(A2:A100,A2:A100, 0),row(A2:A100)-row(A2)+1)>0))

Извините, если на этот вопрос уже был дан ответ / если формат этого вопроса не идеален. Это первый вопрос, который я задал о переполнении стека.

1 Ответ

0 голосов
/ 13 апреля 2019

Вы пробовали ..

worksheet['L1'] = f"=\"CONCATENATE("Count of Unique Keywords = ", SUM(--(FREQUENCY(MATCH(A2:A100,A2:A100, 0),ROW(A2:A100)-ROW(A2)+1)>0)))"

В результате будет получена единичная ячейка Excel с "Count of Unique Keywords =" + выводом из формулы, предполагающей, что ваша функция и вспомогательные данные работают правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...