API منبع باز Python برای Google Sheets
کتابخانه پایتون که فراخوانی پایتون از اکسل و بالعکس را آسان می کند.
Xlwings یک API منبع باز پایتون برای دستکاری فرمت فایل اکسل است. با استفاده از API میتوانید اکسل را از پایتون برای تولید گزارشها، نوشتن UDF (توابع تعریفشده توسط کاربر)، نوشتن ماکروها، و کنترل اکسل از راه دور خودکار کنید. علاوه بر این، API اجازه می دهد تا ساختارهای داده مانند سلول ها، لیست ها، محدوده ها، آرایه های NumPy، فریم های داده پاندا و سری های پاندا را دستکاری کنید.
Xlwings به نصب Microsoft Excel نیاز دارد، بنابراین همه چیز در ویندوز و macOS کار می کند به جز اینکه UDF ها فقط روی ویندوز کار می کنند.
شروع کار با Xlwings
برای اجرای روان xlwings باید پایتون 3.5 یا بالاتر را روی سیستم خود نصب کنید. روش توصیه شده برای نصب از طریق PIP. لطفا از دستور زیر استفاده کنید.
Xlwings را از طریق دستور PIP نصب کنید
pip install xlwings
Xlwings را از طریق Conda نصب کنید
conda install xlwings
تعامل با اکسل از پایتون
Xlwings API اجازه می دهد تا صفحات گسترده مایکروسافت را با استفاده از پایتون دستکاری کنید. با استفاده از API می توانید به یک کتاب کار موجود متصل شوید یا با استفاده از متد ()xlwings.Book یک کتاب جدید ایجاد کنید. می توانید مقادیر را به و از محدوده ها بخوانید/بنویسید، محدوده ها را گسترش دهید، انواع داده ها را به راحتی تبدیل کنید. علاوه بر این، میتوانید نمودار Matplotlib و Plotly را به عنوان تصاویر در کتابهای کاری اکسل خود اضافه کنید.
ابعاد دامنه های اکسل را به صورت پویا از طریق پایتون دریافت کنید
sheet = xw.Book().sheets[0]
sheet['A1'].value = [[1,2], [3,4]]
range1 = sheet['A1'].expand('table') # or just .expand()
range2 = sheet['A1'].options(expand='table')
range1.value
[[1.0, 2.0], [3.0, 4.0]]
range2.value
[[1.0, 2.0], [3.0, 4.0]]
sheet['A3'].value = [5, 6]
range1.value
[[1.0, 2.0], [3.0, 4.0]]
range2.value
پایتون را از اکسل فراخوانی کنید
کتابخانه صفحه گسترده منبع باز Xlwings به توسعه دهندگان نرم افزار اجازه می دهد تا از طریق اکسل با پایتون ارتباط برقرار کنند. میتوانید با استفاده از دکمه Run افزونه Xlwings Excel یا با استفاده از Funciton RunPython VBA، فونسیتونهای پایتون را در اکسل خود فراخوانی کنید. خوبی استفاده از افزونه اکسل این است که نیازی به فعال سازی ماکرو کتاب های خود ندارید و می توانید آن را به عنوان xlsx ذخیره کنید.
از Python Script برای درج کدهای QR در Microsoft Excel استفاده کنید
import tempfile
import segno
import xlwings as xw
# Update this with the name of your workbook
book = xw.Book('qr.xlsx')
sheet = xw.sheets[0]
# Update this with the starting cell of your URLs
start_cell = sheet['A1']
urls = start_cell.options(expand='down', ndim=1).value
# Loop through each URL and generate the QR code
for ix, url in enumerate(urls):
# Generate the QR code
qr = segno.make(url)
with tempfile.TemporaryDirectory() as td:
# Save the QR code as a temporary svg file. If you are on macOS, use pdf
# instead and if you don't have Microsoft 365, you may have to use png
filepath = f'{td}/qr.svg'
qr.save(filepath, scale=5, border=0, finder_dark='#15a43a')
# Insert the QR code to the right of the URL
destination_cell = start_cell.offset(row_offset=ix, column_offset=1)
sheet.pictures.add(filepath,
left=destination_cell.left,
top=destination_cell.top)
توابع تعریف شده توسط کاربر (UDF) در اکسل با استفاده از پایتون
کتابخانه Xlwings به توسعه دهندگان این امکان را می دهد که توابع تعریف شده کاربر (UDF) را در قالب فایل مایکروسافت اکسل به صورت برنامه ای بنویسند. در حال حاضر، UDF ها فقط در ویندوز در دسترس هستند. API امکان استفاده از فونسیتون های ساده، تعداد ابعاد آرایه، فرمول های آرایه پویا، فرمول های آریا با NumPy و موارد دیگر را می دهد.
نحوه فراخوانی ماکروها از طریق RunPython در Microsoft Excel
import xlwings as xw
@xw.sub
def my_macro():
"""Writes the name of the Workbook into Range("A1") of Sheet 1"""
wb = xw.Book.caller()
wb.sheets[0].range('A1').value = wb.name