Использование модуля Python xlwings для создания комментариев к ячейкам

Я создаю электронную таблицу с нуля, используя xlwings, и заполняю ее данными из текстового файла.

Я пытаюсь найти способ создать комментарий для ячеек с помощью xlwings. Из всего, что я видел, это невозможно. Кто-нибудь знает способ сделать это?

Если нет, то я уже создал скрипт VBA в прошлом, который я могу использовать, но есть ли способ перенести этот скрипт VBA в мой скрипт python? Я хотел бы сделать это, чтобы мне не приходилось запускать скрипт python, а затем отдельно запускать скрипт VBA.

Заранее спасибо.


person Grady Negronida    schedule 09.05.2016    source источник
comment
Вы пробовали этот пост? stackoverflow.com/questions/30308455/   -  person Weasemunk    schedule 09.05.2016
comment
Спасибо, я думаю, я пропустил это. Я обнаружил, что XlsxWriter-0.8.6 поддерживает написание комментариев, поэтому я могу пойти по пути создания и заполнения электронной таблицы с помощью xlwings, а затем пробежаться по ячейкам с помощью XlsxWriter-0.8.6, чтобы написать в комментариях... Не лучшее решение но лучше, чем возиться со сценарием VBA.   -  person Grady Negronida    schedule 09.05.2016
comment
@GradyNegronida: XlsxWriter нельзя использовать для обновления так, как вы описываете. Это чистый писатель; он может только создавать новые рабочие книги. Если вы используете его для записи книги с тем же именем, что и у существующей книги, то старая книга будет уничтожена, и вы создадите новую книгу, в которой нет ничего, кроме комментариев (или того, что вы явно написали с помощью XlsxWriter) .   -  person John Y    schedule 11.05.2016
comment
На самом деле, если вы создаете книгу с нуля (как вы говорите в своем вопросе), вам следует выполнять весь проект в XlsxWriter и полностью забыть о xlwings (и, конечно же, о VBA).   -  person John Y    schedule 11.05.2016
comment
@JohnY Да, я действительно пришел к этому пониманию очень скоро после того, как пошел по пути xlxsWriter. С тех пор я переписал сценарий с помощью xlsxwriter и полностью избавился от xlwings, как вы предложили. Спасибо за вашу помощь!!   -  person Grady Negronida    schedule 12.05.2016


Ответы (3)


Как объясняется здесь, вы всегда можете вернуться к базовым объектам pywin32 для обходного пути, не реализованного Особенности. В случае с комментариями в Windows это будет выглядеть примерно так:

import xlwings as xw
wb = xw.Workbook.active()
xw.Range('A1').xl_range.AddComment()
xw.Range('A1').xl_range.Comment.Text('Some Text')
person Felix Zumstein    schedule 12.05.2016
comment
Похоже, что комментарии по умолчанию отображаются жирным шрифтом. Как выборочно выделить определенный текст комментария? Спасибо. - person D.prd; 22.11.2017

Если вы на самом деле обновляете электронную таблицу и поэтому используете xlwings, то xlwings изменил свой его API.

import xlwings as xw
wb = xw.Workbook.active()
xw.Range('A1').api.AddComment('Some Text')

Во-вторых, xlsxwriter удобен для создания с нуля.

person hum3    schedule 17.08.2017
comment
Как я могу узнать параметры, доступные внутри свойства API? - person Mojimi; 28.08.2017

Если wb = xlwings.Book() в macOS 10.12 с Excel 2011, то методы get и set wb.range('A1').api.comment не работают с XLWings 0.11.4. В качестве обходного пути вы можете создать макрос VBA в своей книге следующим образом.

Sub AddCommentHook(address As String, message As String)
    Call Range(address).AddComment(message)
End Sub

(Не забудьте использовать диалоговое окно «Добавить макрос» на панели инструментов разработчика, чтобы убедиться, что рабочая книга Excel знает о коде VBA.) Затем вы можете добавить комментарий к ячейке Excel из Python следующим образом:

ach = wb.macro('AddCommentHook')
ach('Sheet1!A1', 'test 123')
person wkschwartz    schedule 14.12.2017