کتابخانه openpyxl در پایتون
کتابخانه OpenPyXL یکی از پرکاربردترین ابزارها در زبان برنامهنویسی پایتون برای کار با فایلهای .xlsx (فایلهای Excel) است. این کتابخانه به شما اجازه میدهد تا فایلهای اکسل را بخوانید، ایجاد کنید، ویرایش کنید و فرمولها یا دادههای گرافیکی را مدیریت نمایید. در این آموزش، به صورت گامبهگام با منطق کاری OpenPyXL، مثالهای کاربردی و بهترین شیوههای استفاده از آن آشنا میشویم.
چرا از OpenPyXL استفاده کنیم؟
کتابخانههای مختلفی برای کار با اکسل در پایتون وجود دارند (مانند xlrd، xlwt و pandas)، اما OpenPyXL مزیتهای مهمی دارد:
- پشتیبانی از نسخههای جدید اکسل (xlsx)
- قابلیت ایجاد نمودارها و فرمولها
- امکان قالببندی سلولها، استایلها و رنگها
- سازگاری کامل با پایتون 3
- رابط کاربری شیءگرا (Object-Oriented)
نصب کتابخانه OpenPyXL
برای نصب این کتابخانه کافی است از pip استفاده کنید:
pip install openpyxl
اگر از محیطهایی مانند Anaconda استفاده میکنید، میتوانید از دستور زیر بهره بگیرید:
conda install -c anaconda openpyxl
ایجاد فایل Excel جدید با OpenPyXL
ابتدا یک فایل جدید اکسل میسازیم و دادههایی در آن ذخیره میکنیم:
from openpyxl import Workbook
# ایجاد یک فایل اکسل جدید
wb = Workbook()
# انتخاب شیت فعال
ws = wb.active
ws.title = "DataSheet"
# اضافه کردن دادهها
ws['A1'] = "Name"
ws['B1'] = "Age"
ws.append(["Ali", 25])
ws.append(["Sara", 30])
# ذخیره فایل
wb.save("example.xlsx")
در این کد، یک فایل به نام example.xlsx ساخته میشود. تابع append() برای افزودن سطرهای جدید استفاده میشود و متد save() برای ذخیرهسازی نهایی فایل است.
نکته:
اگر فایل از قبل وجود داشته باشد، اجرای مجدد این کد باعث بازنویسی (overwrite) آن خواهد شد. برای جلوگیری از این اتفاق، بهتر است قبل از ذخیره فایل، وجود آن را بررسی کنید.
خواندن دادهها از فایل Excel
برای خواندن دادهها از یک فایل اکسل موجود، از کلاس load_workbook استفاده میکنیم:
from openpyxl import load_workbook
wb = load_workbook("example.xlsx")
ws = wb["DataSheet"]
for row in ws.iter_rows(values_only=True):
print(row)
تابع iter_rows() دادهها را به صورت سطر به سطر بازمیگرداند. پارامتر values_only=True باعث میشود فقط مقدار سلولها (و نه اشیای سلول) خوانده شوند.
بهترین روش خواندن دادهها
اگر فقط به بخش خاصی از داده نیاز دارید، بهتر است با محدوده مشخصی از سلولها کار کنید تا سرعت عملکرد بالا برود:
for row in ws["A1":"B3"]:
for cell in row:
print(cell.value)
نوشتن داده در سلولهای خاص
گاهی لازم است داده را در سلول مشخصی بنویسیم، نه با استفاده از append. برای این کار کافی است نام سلول را مستقیم مشخص کنیم:
ws["C1"] = "City"
ws["C2"] = "Tehran"
ws["C3"] = "Shiraz"
wb.save("example.xlsx")
با این روش، داده در سلولهای خاص درج میشود. همیشه بعد از اعمال تغییرات، باید فایل را مجدداً ذخیره کنید.
فرمولنویسی در OpenPyXL
کتابخانه OpenPyXL از فرمولهای اکسل نیز پشتیبانی میکند. برای مثال:
ws["D1"] = "Total"
ws["D2"] = "=SUM(B2:B3)"
wb.save("example.xlsx")
در این مثال، یک فرمول SUM در سلول D2 تعریف شده است که جمع مقادیر ستون B را محاسبه میکند. توجه داشته باشید که نتیجه فرمول هنگام مشاهده در اکسل محاسبه میشود، نه در پایتون.
قالببندی و استایلدهی سلولها
OpenPyXL امکان تغییر رنگ، فونت و حاشیه سلولها را فراهم میکند. برای مثال:
from openpyxl.styles import Font, Color, Alignment
# تغییر فونت و رنگ
ws["A1"].font = Font(bold=True, color="FF0000")
ws["B1"].font = Font(italic=True, size=12)
# تنظیم تراز وسط
ws["A1"].alignment = Alignment(horizontal="center")
wb.save("styled.xlsx")
در این مثال، عنوانها به رنگ قرمز و ضخیم تنظیم میشوند و متنها در مرکز سلول قرار میگیرند.
نکات بهینهسازی قالببندی
- برای عملکرد بهتر، از استایلدهی گسترده در فایلهای بزرگ اجتناب کنید.
- در صورت نیاز به قالببندی زیاد، از قالبهای ازپیشتعریفشده (template) استفاده کنید.
ایجاد نمودار در اکسل با OpenPyXL
یکی از ویژگیهای قدرتمند OpenPyXL، پشتیبانی از نمودارهاست. در مثال زیر یک نمودار ستونی ساده ایجاد میکنیم:
from openpyxl.chart import BarChart, Reference
# ایجاد دادهها
ws["A5"] = "Product"
ws["B5"] = "Sales"
ws.append(["Book", 40])
ws.append(["Pen", 30])
ws.append(["Ruler", 20])
# انتخاب محدوده دادهها
values = Reference(ws, min_col=2, min_row=6, max_row=8)
categories = Reference(ws, min_col=1, min_row=6, max_row=8)
# ایجاد نمودار
chart = BarChart()
chart.add_data(values, titles_from_data=False)
chart.set_categories(categories)
chart.title = "Sales Report"
# افزودن نمودار به شیت
ws.add_chart(chart, "E5")
wb.save("chart.xlsx")
در این مثال، با استفاده از کلاسهای BarChart و Reference دادهها انتخاب شده و نمودار ساخته میشود. سپس نمودار در سلول E5 قرار میگیرد.
مدیریت چندین شیت در یک فایل
هر فایل اکسل میتواند چندین شیت داشته باشد. برای اضافه کردن شیت جدید:
sheet2 = wb.create_sheet(title="Summary")
sheet2["A1"] = "Report generated successfully!"
wb.save("example.xlsx")
برای مشاهده یا تغییر نام شیتها:
print(wb.sheetnames)
wb["Summary"].title = "FinalReport"
wb.save("example.xlsx")
مقایسه عملکرد OpenPyXL با سایر کتابخانهها
| کتابخانه | پشتیبانی از XLSX | خواندن | نوشتن | فرمولها |
|---|---|---|---|---|
| OpenPyXL | بله | ✅ | ✅ | ✅ |
| xlrd / xlwt | خیر (فقط XLS) | ✅ | ✅ | ❌ |
| pandas | بله (با OpenPyXL) | ✅ | ✅ | محدود |
بهترین شیوهها در کار با OpenPyXL
- برای فایلهای بزرگ، از
read_only=Trueدرload_workbookاستفاده کنید. - قبل از ذخیره فایل، مسیر و سطح دسترسی را بررسی کنید.
- برای سرعت بیشتر، از محدوده سلولها استفاده کنید نه کل شیت.
- از نسخههای بهروز کتابخانه استفاده کنید تا باگها و محدودیتها رفع شوند.
جمعبندی
کتابخانه OpenPyXL ابزاری قدرتمند برای توسعهدهندگان پایتون است که میخواهند دادهها را در محیط اکسل مدیریت کنند. با یادگیری مفاهیم پایه مانند ایجاد شیت، نوشتن دادهها، فرمولها و نمودارها، میتوان گزارشهای پویا و حرفهای تولید کرد. استفاده از OpenPyXL در پروژههای تجاری، علمی و اتوماسیون اداری به طور گسترده توصیه میشود.
آیا این مطلب برای شما مفید بود ؟




