آموزش

پایتون و اکسل: یک راهنمای کاربردی با مثال

یاد بگیر چطور فایل‌های اکسل رو در پایتون بخونی و وارد کنی، داده‌ها رو در اسپردشیت (spreadsheet) بنویسی و بهترین پکیج‌ها رو برای این کار پیدا کنی.

تاریخ انتشار:
15 شهریور 1405
پایتون
15 دقیقه
علم داده
کاربرهای فینکا در چه شرکت‌هایی مشغول به کار هستند؟

یکی از محدودیت‌های اکسل اینه که نمی‌تونه حجم زیادی از داده‌ها رو به خوبی مدیریت کنه. وقتی می‌خوای عملیات پیچیده‌ای رو روی داده‌های حجیم در اکسل انجام بدی، احتمالاً با افت شدید عملکرد روبرو می‌شی؛ مخصوصاً اگر فرمول‌ها و ماکروهات برای مقیاس‌های بزرگ بهینه نشده باشن.

اگر بخوای کارهای تکراری انجام بدی، اکسل می‌تونه خیلی وقت‌گیر باشه. مثلاً اگر لازم باشه هر هفته یک تحلیل خاص رو روی چند فایل اکسل تکرار کنی، باید همه رو دستی باز کنی و همون فرمول‌ها رو بارها و بارها کپی و پیست کنی.

نظرسنجی‌ها نشون می‌دن که ۹۳٪ از کاربران اکسل ترکیب کردن اسپردشیت (spreadsheet) رو زمان‌بر می‌دونن و کارمندان هر ماه حدود ۱۲ ساعت رو فقط صرف ترکیب فایل‌های مختلف اکسل می‌کنن.

اما این مشکلات رو می‌شه با خودکارسازی جریان‌های کاری اکسل از طریق پایتون برطرف کرد. کارهایی مثل ترکیب اسپردشیت، پاک‌سازی داده‌ها و مدل‌سازی پیش‌بینی رو می‌شه فقط در چند دقیقه با یک اسکریپت ساده پایتون که خروجی رو در فایل اکسل می‌نویسه، انجام داد.

کاربران اکسل همچنین می‌تونن یک اسکریپت خودکارسازی پایتون در فینکا تنظیم کنن تا طبق یک زمان‌بندی مشخص اجرا بشه و کارهای دستی و تکراری رو حذف کنه.

در این مقاله، قدم‌به‌قدم بهت نشون می‌دیم چطور:

  • از openpyxl برای خوندن و نوشتن فایل‌های اکسل در پایتون استفاده کنی
  • عملیات ریاضی و فرمول‌های اکسل رو با پایتون بسازی
  • شیت‌های اکسل رو با پایتون تغییر بدی
  • مصورسازی‌هایی رو در پایتون بسازی و در فایل اکسل ذخیره کنی
  • رنگ‌ها و استایل‌های سلول‌های اکسل رو با پایتون فرمت‌بندی کنی

خلاصه مطالب

  • کتابخونه openpyxl رو با دستور pip install openpyxl نصب کن.
  • هر فایل .xlsx رو با openpyxl.load_workbook('file.xlsx') بارگذاری کن؛ برای دسترسی به شیت‌ها هم از wb.active یا wb['SheetName'] استفاده کن.
  • مقدار سلول‌ها رو با ws['A1'].value بخون؛ برای پیمایش سطرها هم می‌تونی از ws.iter_rows(values_only=True) استفاده کنی.
  • با ws['A1'] = 'value' می‌تونی در سلول‌ها بنویسی و تغییرات رو با wb.save('file.xlsx') ذخیره کنی.
  • فرمول‌های اکسل، نمودارهای میله‌ای، نمودارهای خطی و قالب‌بندی شرطی (conditional formatting) رو کاملاً با پایتون بساز، بدون اینکه حتی نیازی باشه اکسل رو باز کنی.

پیش‌نیازها

برای دنبال کردن این آموزش، به این موارد نیاز داری:

  • پایتون ۳.۸ یا بالاتر که روی سیستمت نصب باشه.
  • آشنایی اولیه با پایتون (مثل متغیرها، حلقه‌ها و توابع).
  • نصب بودن کتابخونه openpyxl (با دستور pip install openpyxl).
  • یک برنامه برای مشاهده اسپردشیت مثل اکسل، گوگل شیت یا LibreOffice Calc تا بتونی فایل‌های خروجی رو بررسی کنی.

دیتاست فروش بازی‌های ویدیویی که در این آموزش ازش استفاده کردیم رو می‌تونی از اینجا دانلود کنی.

معرفی openpyxl

Openpyxl یک کتابخونه پایتونه که بهت اجازه می‌ده فایل‌های اکسل رو بخونی و در اون‌ها بنویسی.

این فریم‌ورک می‌تونه بهت کمک کنه توابع مختلف بنویسی، اسپردشیت رو قالب‌بندی کنی، گزارش بسازی و نمودارها رو مستقیماً در پایتون ایجاد کنی، بدون اینکه حتی لازم باشه برنامه اکسل رو باز کنی.

همچنین با Openpyxl می‌تونی بین شیت‌ها جابه‌جا بشی و یک تحلیل رو روی چند دیتاست به صورت یکجا اجرا کنی.

این ویژگی باعث می‌شه خودکارسازی کارهای تکراری اکسل روی هر تعداد شیت که باشه، خیلی سرراست و راحت بشه.

مقایسه Openpyxl و Pandas: انتخاب ابزار مناسب

یک سوال خیلی رایج اینه که برای کارهای اکسل بهتره از openpyxl استفاده کنیم یا pandas؟ جواب این سوال کاملاً به کاری که می‌خوای انجام بدی بستگی داره.

وظیفه openpyxl Pandas
خوندن داده از اکسل بله بله
نوشتن داده در اکسل بله بله (از طریق to_excel())
قالب‌بندی سلول‌ها (فونت‌ها، رنگ‌ها، حاشیه‌ها) بله خیر
ایجاد نمودار درون فایل اکسل بله خیر
استفاده از فرمول‌های اکسل بله خیر
تحلیل و تبدیل داده‌ها محدود بله
فایل‌های خیلی بزرگ (بیشتر از ۱۰۰ هزار سطر) از read_only=True استفاده کن به صورت پیش‌فرض از نظر حافظه بهینه‌تره

وقتی نیاز داری ظاهر و ساختار فایل اکسل (مثل قالب‌بندی، نمودارها و فرمول‌ها) رو کنترل کنی، از openpyxl استفاده کن. اما وقتی نیاز به فیلتر کردن، تجمیع یا تغییر شکل داده‌ها داری، pandas انتخاب بهتریه. آموزش pandas در فینکا بخش تحلیل داده رو به‌طور کامل پوشش می‌ده.

نصب openpyxl

برای نصب openpyxl، ترمینال یا پاورشل (PowerShell) رو باز کن و این دستور رو اجرا کن:

خروجی
Collecting openpyxl
  Using cached openpyxl-3.0.9-py2.py3-none-any.whl (242 kB)
Requirement already satisfied: et-xmlfile in c:\users\finca\appdata\local\programs\python\python310\lib\site-packages (from openpyxl) (1.1.0)
Installing collected packages: openpyxl
Successfully installed openpyxl-3.0.9

پیامی که می‌ببینی، نشون می‌ده پکیج با موفقیت نصب شده.

خوندن فایل‌های اکسل در پایتون با openpyxl

در این آموزش، از دیتاست فروش بازی‌های ویدیویی کگل (Kaggle) استفاده می‌کنیم. این دیتاست برای این آموزش پیش‌پردازش شده و می‌تونی نسخه اصلاح‌شده‌اش رو از این لینک دانلود کنی. با طی کردن مراحل زیر می‌تونی فایل اکسل رو وارد پایتون کنی:

بارگذاری فایل

بعد از دانلود دیتاست، کتابخونه openpyxl رو وارد و فایل رو بارگذاری کن:

حالا که فایل اکسل به عنوان یک شیء در پایتون بارگذاری شده، باید به کتابخونه بگی که می‌خوای از کدوم ورک‌شیت استفاده کنی. برای این کار دو تا راه داری:

روش اول اینه که خیلی ساده ورک‌شیت فعال (active) رو صدا بزنی، که معمولاً همون اولین شیت در ورک‌بوکه. این کار رو می‌تونی با خط کد زیر انجام بدی:

اگر نام ورک‌شیت رو می‌دونی، می‌تونی مستقیماً با استفاده از همون نام بهش دسترسی پیدا کنی. در این بخش از آموزش، ما از ورک‌شیت vgsales استفاده می‌کنیم:

حالا بیا تعداد سطرها و ستون‌های این ورک‌شیت رو بشماریم:

خروجی
Total number of rows: 16328. And total number of columns: 10

حالا که ابعاد شیت رو می‌دونیم، بیا بریم جلوتر و یاد بگیریم که چطور باید داده‌ها رو از ورک‌بوک بخونیم.

خوندن بهینه فایل‌های بزرگ

برای فایل‌هایی که سطرهای خیلی زیادی دارن، بهتره اون‌ها رو در حالت read only (فقط‌خواندنی) باز کنی تا کل فایل یکجا وارد حافظه نشه:

حالت read only به جای اینکه کل ورک‌بوک رو در حافظه نگه داره، سطرها رو یکی‌یکی می‌خونه. البته در این حالت نمی‌تونی تغییری در ورک‌بوک ایجاد کنی، پس فقط وقتی ازش استفاده کن که نیاز به پردازش سنگین برای خوندن داده‌های حجیم داری.

خوندن داده از یک سلول

اینجا یک اسکرین‌شات از شیت فعالی که قراره در این بخش روش کار کنیم برات گذاشتیم:

برای گرفتن داده از یک سلول مشخص با openpyxl، می‌تونی مقدار سلول رو این‌طوری بگیری:

خروجی
The value in cell A1 is: Rank

خوندن داده از چند سلول

حالا که یاد گرفتیم چطور داده رو از یک سلول مشخص بخونیم، اگه بخوایم تمام مقادیر یک سطر خاص از فایل رو چاپ کنیم باید چی‌کار کنیم؟

برای این کار، می‌تونی یک حلقه for ساده بنویسی تا بین تمام مقادیر اون سطر بچرخه:

خروجی
['Rank', 'Name', 'Platform', 'Year', 'Genre', 'Publisher', 'NA_Sales', 'EU_Sales', 'JP_Sales', 'Other_Sales']

حالا بیا چند سطر از یک ستون مشخص رو چاپ کنیم.

برای این کار، یک حلقه for می‌سازیم تا مقادیر ده سطر اول از ستون Name رو به صورت یک لیست نمایش بده. در خروجی باید نام‌هایی که در کادر قرمز زیر مشخص شدن رو ببینیم:

خروجی
['Wii Sports', 'Super Mario Bros.', 'Mario Kart Wii', 'Wii Sports Resort', 'Pokemon Red/Pokemon Blue', 'Tetris', 'New Super Mario Bros.', 'Wii Play', 'New Super Mario Bros. Wii', 'Duck Hunt']

در نهایت، بیا ده سطر اول رو در یک محدوده مشخص از ستون‌های فایل چاپ کنیم:

خروجی
   Rank                    Name Platform  Year         Genre Publisher
0     1              Wii Sports      Wii  2006        Sports  Nintendo
1     2       Super Mario Bros.      NES  1985      Platform  Nintendo
2     3          Mario Kart Wii      Wii  2008        Racing  Nintendo
3     4       Wii Sports Resort      Wii  2009        Sports  Nintendo
4     5  Pokemon Red/Pokemon Blue       GB  1996  Role-Playing  Nintendo
5     6                 Tetris       GB  1989        Puzzle  Nintendo
6     7  New Super Mario Bros.       DS  2006      Platform  Nintendo
7     8               Wii Play      Wii  2006          Misc  Nintendo
8     9  New Super Mario Bros. Wii      Wii  2009      Platform  Nintendo
9    10              Duck Hunt      NES  1984       Shooter  Nintendo

نوشتن در فایل‌های اکسل با openpyxl

حالا که یاد گرفتیم چطور به داده‌های فایل‌های اکسل دسترسی پیدا کنیم و اون‌ها رو بخونیم، وقتشه بریم سراغ یادگیری نحوه نوشتن در اون‌ها با استفاده از openpyxl.

نوشتن در یک سلول

دو تا راه وجود داره که می‌تونی با openpyxl در یک فایل بنویسی.

راه اول اینه که مستقیماً با استفاده از کلید سلول (شناسه اون) بهش دسترسی پیدا کنی:

راه دوم اینه که موقعیت سطر و ستون سلولی رو که می‌خوای در اون بنویسی، مشخص کنی:

هر بار که با openpyxl در یک فایل اکسل می‌نویسی، باید تغییراتت رو با کد زیر ذخیره کنی، وگرنه روی ورک‌شیت اعمال نمی‌شن:

اگر موقع ذخیره کردن، فایل اکسل باز باشه، با این خطای سطح دسترسی روبرو می‌شی:

حتماً مطمئن شو که قبل از ذخیره تغییرات، فایل اکسل رو ببندی. بعدش می‌تونی دوباره بازش کنی تا مطمئن بشی تغییرات در ورک‌شیت ثبت شدن:

همون‌طور که می‌بینی، یک ستون جدید به نام Sum of Sales در سلول K1 ایجاد شده.

ساختن یک ستون جدید

حالا بیا مجموع فروش‌ها در هر منطقه رو حساب کنیم و اون رو در ستون K بنویسیم.

ما این کار رو برای داده‌های فروش در سطر اول انجام می‌دیم:

دقت کن که مجموع فروش برای اولین بازی در ورک‌شیت، در سلول K2 محاسبه شده:

به همین شکل، بیا یک حلقه for بسازیم تا مقادیر فروش رو در تمام سطرها جمع کنه:

حالا فایل اکسلِ تو باید یک ستون جدید داشته باشه که مجموع فروش کل بازی‌های ویدیویی در همه منطقه‌ها رو نشون می‌ده:

اضافه کردن سطرهای جدید

برای اضافه کردن یک سطر جدید به ورک‌بوک، خیلی راحت می‌تونی یک تاپل با مقادیری که می‌خوای اضافه بشن بسازی و اون رو در شیت بنویسی:

با چاپ کردن آخرین سطر از ورک‌بوک می‌تونی مطمئن بشی که این داده‌ها به درستی اضافه شدن:

خروجی
[1, 'The Legend of Zelda', 1986, 'Action', 'Nintendo', 3.74, 0.93, 1.69, 0.14, 6.51, 6.5]

حذف کردن سطرها

برای پاک کردن سطر جدیدی که ساختیم، می‌تونی این خط کد رو اجرا کنی:

آرگومان اول در تابع delete_rows() شماره سطریه که قراره حذف بشه. دومین آرگومان هم تعداد سطرهاییه که می‌خوایم حذف بشن.

ایجاد فرمول‌های اکسل با openpyxl

می‌تونی از openpyxl استفاده کنی تا فرمول‌ها رو دقیقاً همون‌طوری که در خود اکسل می‌نویسی، ایجاد کنی. در ادامه چند نمونه از توابع ساده‌ای که می‌تونی با openpyxl بسازی رو بررسی می‌کنیم:

تابع ()AVERAGE

حالا یک ستون جدید به اسم "Average Sales" ایجاد می‌کنیم تا میانگین فروش بازی‌های ویدیویی در همه بازارها رو محاسبه کنیم.

میانگین فروش در تمام بازارها حدود 0.19 هست. این مقدار در سلول P2 از ورک‌شیت قرار می‌گیره.

تابع ()COUNTA

تابع COUNTA در اکسل تعداد سلول‌های پُرشده در یک بازه مشخص رو می‌شمره. حالا از این تابع استفاده می‌کنیم تا تعداد رکوردهای موجود در بازه E2 تا E16220 رو به دست بیاریم:

تعداد 16,219 رکورد در این محدوده وجود دارن که حاوی اطلاعات هستن.

تابع ()COUNTIF

تابع COUNTIF یکی از پرکاربردترین توابع اکسله که تعداد سلول‌هایی رو که شرط خاصی دارن می‌شمره. حالا از این تابع استفاده می‌کنیم تا تعداد بازی‌هایی از این دیتاست که ژانر Sports دارن رو پیدا کنیم:

در این دیتاست 2,296 بازی ورزشی وجود داره.

تابع ()SUMIF

حالا با استفاده از تابع SUMIF، مجموع مقادیر Sum of Sales مربوط به بازی‌هایی با ژانر Sports رو محاسبه می‌کنیم:

مجموع کل فروش‌های مربوط به بازی‌های ورزشی برابر با 454 هست.

تابع ()CEILING

تابع CEILING() در اکسل یک عدد رو به نزدیک‌ترین ضریب مشخص‌شده، رو به بالا گرد می‌کنه. بیا کل فروش بازی‌های ورزشی رو با استفاده از این تابع، رو به بالا گرد کنیم:

ما کل فروش حاصل از بازی‌های ورزشی رو به نزدیک‌ترین ضریب 25 گرد کردیم که نتیجه 475 به دست میاد. کدهای بالا باید خروجی زیر رو در شیت اکسل تولید کنن (از سلول P1 تا T2):

کار با شیت‌ها در openpyxl

حالا که یاد گرفتیم چطور به ورک‌شیت‌ها دسترسی پیدا کنیم و در اون‌ها بنویسیم، بیا یاد بگیریم که چطور می‌شه با استفاده از openpyxl اون‌ها رو تغییر داد، حذف کرد یا ازشون کپی گرفت.

تغییر اسم شیت‌ها

اول از همه بیا اسم شیتی که فعاله و داریم روش کار می‌کنیم رو با استفاده از ویژگی title در openpyxl چاپ کنیم:

خروجی
vgsales

حالا بیا اسم این ورک‌شیت رو با کمک کدهای زیر تغییر بدیم:

حالا باید نام ورک‌شیت فعال به Video Game Sales Data تغییر کرده باشه.

ساختن یک ورک‌شیت جدید

کد زیر رو اجرا کن تا تمام ورک‌شیت‌های موجود در ورک‌بوک رو لیست کنه. این طوری یک آرایه می‌بینی که اسم تمام ورک‌شیت‌های موجود در فایل رو لیست کرده:

خروجی
['Video Game Sales Data', 'Total Sales by Genre', 'Breakdown of Sales by Genre', 'Breakdown of Sales by Year']

حالا بیا یک ورک‌شیت خالی جدید بسازیم:

خروجی
['Video Game Sales Data', 'Total Sales by Genre', 'Breakdown of Sales by Genre', 'Breakdown of Sales by Year', 'Empty Sheet']

دقت کن که حالا یک ورک‌شیت جدید به نام Empty Sheet ایجاد شده.

حذف کردن یک ورک‌شیت

برای حذف کردن یک ورک‌شیت با openpyxl، می‌تونی خیلی راحت از متد remove استفاده کنی و دوباره اسم تمام شیت‌ها رو چاپ کنی تا مطمئن بشی شیت با موفقیت پاک شده:

خروجی
['Video Game Sales Data', 'Total Sales by Genre', 'Breakdown of Sales by Genre', 'Breakdown of Sales by Year']

همون‌طور که می‌بینی ورک‌شیت Empty Sheet دیگه وجود نداره و پاک شده.

کپی گرفتن از ورک‌شیت

در نهایت، این کد رو اجرا کن تا یک کپی از یک ورک‌شیت موجود ساخته بشه:

اگر دوباره اسم همه شیت‌ها رو چاپ کنی، این خروجی رو می‌گیری:

اضافه کردن نمودار به فایل اکسل با openpyxl

معمولاً از اکسل به عنوان ابزار اصلی برای رسم نمودار و خلاصه کردن داده‌ها استفاده می‌شه. در این بخش می‌خوایم یاد بگیریم چطور مستقیماً از پایتون و به کمک openpyxl، در اکسل نمودار بکشیم.

نمودار میله‌ای

ابتدا یک نمودار میله‌ای ساده رسم می‌کنیم که مجموع فروش بازی‌های ویدیویی رو بر اساس ژانر نشون می‌ده. برای این کار از ورک‌شیت Total Sales by Genre استفاده می‌کنیم:

همون‌طور که در اسکرین‌شات بالا می‌بینی، این ورک‌شیت یک جدول پیوت داره که مجموع فروش رو بر اساس ژانر محاسبه کرده. قبل از اینکه شروع به ساختن نمودار میله‌ای کنیم، باید به این ورک‌شیت دسترسی پیدا کنیم:

حالا باید به openpyxl بگیم چه مقادیر و دسته‌بندی‌هایی قراره روی نمودار رسم بشن.

مقادیر:

این مقادیر همون داده‌های Sum of Sales هستن که می‌خوایم روی نمودار نمایششون بدیم. برای این کار باید به openpyxl بگیم این داده‌ها دقیقاً در چه محدوده‌ای از فایل قرار دارن. در openpyxl چهار پارامتر برای مشخص کردن محل داده‌ها وجود داره:

  • min_column: شماره اولین ستونی که داده‌ها در اون قرار دارن.
  • max_column: شماره آخرین ستونی که داده‌ها در اون قرار دارن.
  • min_row: شماره اولین سطری که داده‌ها از اونجا شروع می‌شن.
  • max_row: شماره آخرین سطری که داده‌ها در اون قرار دارن.

تصویر زیر نشون می‌ده که چطور می‌تونی این پارامترها رو پیدا کنی:

 

دقت کن که مقدار min_row همون سطر اوله نه سطر دوم. دلیلش اینه که openpyxl شمارش رو از سطری شروع می‌کنه که مقدار عددی در اون وجود داشته باشه.

دسته‌بندی‌ها

حالا باید دقیقاً همین پارامترها رو برای دسته‌بندی‌های نمودار میله‌ای‌مون تعریف کنیم:

این هم کدیه که می‌تونی برای تنظیم پارامترهای دسته‌بندیِ نمودار ازش استفاده کنی:

ساخت نمودار میله‌ای

حالا با اجرای این کدها، می‌تونیم شیء نمودار رو بسازیم و مقادیر و دسته‌بندی‌ها رو بهش اضافه کنیم:

تنظیم عنوان‌های نمودار

در نهایت، می‌تونی عنوان‌های نمودار رو تنظیم کنی و به openpyxl بگی که می‌خوای نمودار کجای شیت قرار بگیره:

حالا اگه فایل اکسل رو باز کنی و به ورک‌شیت Total Sales by Genre بری، باید نموداری شبیه به تصویر زیر رو ببینی:

نمودار میله‌ای گروهی

حالا می‌خوایم یک نمودار میله‌ای گروهی رسم کنیم که مجموع فروش رو بر اساس ژانر و منطقه نشون می‌ده. داده‌های این نمودار در ورک‌شیت Breakdown of Sales by Genre قرار دارن:

درست مثل نمودار قبلی، اینجا هم باید محدوده رو برای مقادیر و دسته‌بندی‌ها مشخص کنیم:

حالا می‌تونیم به ورک‌شیت دسترسی پیدا کنیم و این اطلاعات رو به شکل کد بنویسیم:

حالا دقیقاً مثل قبل، شیء نمودار میله‌ای رو می‌سازیم، مقادیر و دسته‌ها رو واردش می‌کنیم و تنظیمات مربوط به عنوان رو اعمال می‌کنیم:

وقتی ورک‌شیت رو باز کنی، باید یک نمودار میله‌ای گروهی شبیه به این ببینی:

نمودار خطی انباشته

در نهایت، می‌خوایم یک نمودار خطی انباشته با استفاده از داده‌های ورک‌شیت Breakdown of Sales by Year بسازیم. این ورک‌شیت شامل اطلاعات فروش بازی‌ها به تفکیک سال و منطقه‌ست.

بیا بازه مقادیر و دسته‌بندی‌های این نمودار رو هم مشخص کنیم:

حالا حداقل و حداکثر مقادیر رو در کد وارد می‌کنیم:

در مرحله آخر، شیء نمودار خطی رو می‌سازیم و عنوان نمودار و محورهای x و y رو تنظیم می‌کنیم:

با این کار، یک نمودار خطی انباشته شبیه به تصویر زیر در ورک‌شیتت ایجاد می‌شه:

قالب‌بندی سلول‌ها با openpyxl

کتابخونه openpyxl بهت این امکان رو می‌ده که سلول‌های فایل اکسل رو استایل‌دهی کنی. می‌تونی با تغییر اندازه فونت‌ها، رنگ پس‌زمینه و حاشیه‌ی سلول‌ها، ظاهر شیت رو مستقیماً از طریق پایتون زیباتر کنی.

در ادامه چند روش برای شخصی‌سازی ظاهر فایل‌های اکسل با استفاده از openpyxl رو بررسی می‌کنیم:

تغییر اندازه و استایل فونت‌ها

بیا با کمک این کد، سایز فونت سلول A1 رو بزرگ‌تر کنیم و متنش رو بولد کنیم:

همون‌طور که می‌بینی، متن سلول A1 کمی بزرگ‌تر و بولد شده:

حالا اگه بخوایم سایز فونت و استایل رو برای تمام تیترهای سطر اول تغییر بدیم باید چی‌کار کنیم؟

کافیه همون کد رو با یک حلقه for ترکیب کنیم تا روی تمام ستون‌های سطر اول حرکت کنه:

وقتی روی ["1:1"] پیمایش می‌کنیم، در واقع به openpyxl می‌گیم که فقط سطر اول رو پردازش کنه (چون سطر شروع و پایان هر دو ۱ هستن). اگه مثلاً بخوایم روی ده سطر اول پیمایش کنیم، باید از ["1:10"] استفاده کنیم.

حالا می‌تونی فایل اکسل رو باز کنی تا مطمئن بشی تغییرات به‌درستی اعمال شدن.

تغییر رنگ فونت

با استفاده از کدهای رنگ هگز می‌تونی رنگ فونت‌ها رو در openpyxl تغییر بدی:

بعد از ذخیره کردن و باز کردن مجدد فایل، باید ببینی که رنگ متن در سلول‌های A1 و A2 تغییر کرده:

تغییر رنگ پس‌زمینه سلول

برای تغییر دادن رنگ پس‌زمینه یک سلول، می‌تونی از ماژول PatternFill استفاده کنی:

این تغییرات باید در ورک‌شیتت مشخص شده باشن:

اضافه کردن حاشیه سلول‌ها

برای اضافه کردن حاشیه به سلول‌ها در openpyxl، می‌تونی این کدها رو اجرا کنی:

باید حاشیه‌ای شبیه به این دور سلول A1 ببینی:

قالب‌بندی شرطی

قالب‌بندی شرطی قابلیتی در اکسله که اجازه می‌ده سلول‌هایی رو که شرایط خاصی دارن به صورت خودکار با یک استایل مشخص نمایش بدیم. این کار باعث می‌شه بررسی داده‌ها راحت‌تر بشه و مقادیر مهم خیلی سریع‌تر به چشم بیان.

حالا می‌خوایم با استفاده از openpyxl، تمام مقادیر فروش که بزرگ‌تر یا مساوی ۸ هستن رو با رنگ سبز هایلایت کنیم:

در بخش اول کد، رنگ پس‌زمینه سلول‌هایی که می‌خوایم قالب‌بندی بشن رو مشخص می‌کنیم. تو این مثال رنگ سبز روشن رو انتخاب کردیم.

در ادامه، یک قانون برای قالب‌بندی شرطی تعریف می‌کنیم که طبق اون، هر مقداری که بزرگ‌تر از ۸ باشه با همون رنگ پس‌زمینه هایلایت می‌شه. در نهایت محدوده سلول‌هایی که این قانون باید روشون اعمال بشه رو هم مشخص می‌کنیم.

بعد از اجرای کد، تمام سلول‌هایی که مقدار فروش بیشتر از ۸ دارن، مثل تصویر زیر با رنگ سبز هایلایت می‌شن.

جمع‌بندی

ما در این آموزش چیزهای زیادی یاد گرفتیم؛ از مفاهیم اولیه کتابخونه openpyxl گرفته تا کارهای پیچیده‌تر مثل رسم نمودار و قالب‌بندی فایل‌های اکسل در پایتون.

پایتون و اکسل هر کدوم بخش‌های متفاوتی از روند کار با داده‌ها رو پوشش می‌دن. اکسل معمولاً برای گزارش‌دهی و تحلیل‌های سریع استفاده می‌شه، اما پایتون ابزار اصلی برای مدل‌سازی، خودکارسازی کارها و انجام محاسبات روی داده‌های خیلی بزرگه.

بزرگ‌ترین مزیت اکسل اینه که تقریباً همه دارن ازش استفاده می‌کنن. از افراد غیرفنی گرفته تا تازه‌کارها، همه می‌تونن گزارش‌هایی که در فایل اکسل آماده شدن رو بفهمن.

از طرف دیگه، پایتون برای تحلیل و مدل‌سازی روی حجم زیادی از داده‌ها کاربرد داره و می‌تونه به تیم‌ها کمک کنه با خودکارسازی وظایف تکراری، بازدهی‌شون رو بالا ببرن.

وقتی از ترکیب پایتون و اکسل در کنار هم استفاده کنی، می‌تونی ساعت‌ها کار تکراری رو خودکار کنی و در عین حال خروجی رو با فرمتی تحویل بدی که برای همه اعضای تیم آشنا و قابل درکه. برای تسلط بیشتر روی این مهارت‌ها، دوره پایتون برای کاربران اسپردشیت در فینکا رو پیشنهاد می‌کنیم؛ همچنین می‌تونی راهنمای ما درباره پایتون در اکسل رو بخونی تا یاد بگیری چطور کدهای پایتون رو مستقیماً در خود فایل‌های اکسل اجرا کنی.

اشتراک‌گذاری
فهرست مطالب
  • خلاصه مطالب
  • پیش‌نیازها
  • معرفی openpyxl
  • مقایسه Openpyxl و Pandas: انتخاب ابزار مناسب
  • نصب openpyxl
  • خوندن فایل‌های اکسل در پایتون با openpyxl
  • نوشتن در فایل‌های اکسل با openpyxl
  • ایجاد فرمول‌های اکسل با openpyxl
  • کار با شیت‌ها در openpyxl
  • اضافه کردن نمودار به فایل اکسل با openpyxl
  • قالب‌بندی سلول‌ها با openpyxl
  • جمع‌بندی

سوالات متداول

پایتون با کمک کتابخونه‌هایی مثل Pandas و NumPy که برای سرعت بالا بهینه‌سازی شدن، می‌تونه داده‌های بزرگ رو خیلی بهتر مدیریت کنه. برخلاف اکسل، پایتون هیچ وابستگی‌ای به رابط گرافیکی نداره؛ برای همین می‌تونه میلیون‌ها سطر رو مستقیماً در حافظه پردازش کنه و کارهای پیچیده رو بدون ترس از کرش کردن یا کُند شدن شدید انجام بده.

بله، پایتون می‌تونه با فرمت‌های مختلفی مثل CSV، JSON و انواع دیتابیس‌ها کار کنه. با استفاده از کتابخونه‌هایی مثل Pandas می‌تونی این فایل‌ها رو بخونی و خیلی راحت ازشون خروجی اکسل بگیری. مثلاً:

import pandas as pd
data = pd.read_csv('data.csv')  # Load CSV file
data.to_excel('data.xlsx', index=False)  # Save as Excel

بله، پایتون بهت این امکان رو می‌ده که داده‌های چند فایل اکسل رو در یک فایل یا شیت ترکیب کنی. این کار رو می‌تونی با کتابخونه‌هایی مثل openpyxl یا Pandas انجام بدی. مثلاً با Pandas می‌تونی چند تا فایل رو به شکل دیتافریم بخونی، با هم ادغام کنی یا به هم بچسبونی و در نهایت نتیجه رو در یک فایل اکسل جدید ذخیره کنی:

import pandas as pd
df1 = pd.read_excel('file1.xlsx')
df2 = pd.read_excel('file2.xlsx')
combined = pd.concat([df1, df2])
combined.to_excel('combined.xlsx', index=False)

دریافت اپلیکیشن فینکا

با اپلیکیشن فینکا، به بیشتر دوره‌ها و مسیرها روی موبایل دسترسی دارید، تمرین می‌کنید و یادگیری رو هم‌زمان روی موبایل و دسکتاپ ادامه می‌دید.