Рассмотрите возможность использования библиотеки win32com
при использовании Python для Windows, так как она может получить доступ к библиотеке объектов Excel и использовать любые ее методы и свойства, такие как Workbooks.Open
, Interior.Color
, Workbook.Close
.
Используя эту интересную ссылку для извлечения значений RGB, вы можете перевести VBA на Python. В частности, оператор целочисленного деления VBA, обратная косая черта, \
, преобразуется в двойную косую черту Python, //
, а оператор по модулю в VBA mod
становится %
Python.
Ниже выводится RGB ячейки желтого цвета. Оба типа ссылок на ячейки включены. Вся подпрограмма заключена в try/except/finally
для закрытия фоновых процессов и освобождения ресурсов с ошибкой выполнения или без нее.
import win32com.client as win32
def getRGB(xlCell):
C = xlCell.Interior.Color
R = C % 256
G = C // 256 % 256
B = C // 65536 % 256
return "R={}, G={}, B={}".format(R, G, B)
try:
xlApp = win32.gencache.EnsureDispatch('Excel.Application')
wb = xlApp.Workbooks.Open('C:\\Path\\To\\Workbook.xlsx')
ws = wb.Worksheets('RESULTS')
print(getRGB(ws.Range("A2"))) # A1 Style Reference
# R=255, G=255, B=0 (yellow-colored cell)
print(getRGB(ws.Cells(2,1))) # R1C1 Style Reference
# R=255, G=255, B=0 (yellow-colored cell)
wb.Close(False)
xlApp.Visible = False
except Exception as e:
print(e)
finally:
xlApp.Quit
ws = None
wb = None
xlApp = None
Кроме того, обратите внимание, что VBA НЕ является частью MS Excel, а является внешним компонентом (по умолчанию подключенным к программному обеспечению). Это просто еще один язык для подключения к библиотеке объектов Excel, поскольку любой язык программирования, продемонстрированный здесь с Python, может создать COM-интерфейс для этой библиотеки.
person
Parfait
schedule
24.02.2017