کار با فایل های اکسل (بخش اول)

 

حتما در هنگام نوشتن برنامه ها به زبان پایتون گاهی نیاز پیدا می کنید که اطلاعاتی را در فایل اکسل ذخیره کنید و به عنوان خروجی برنامه قرار دهید یا مدیر پروژه از شما درخواست می کند که اطلاعات را به صورت یک فایل اکسل تحویل دهید تا آنها در نرم افزار دیگری استفاده کنند.

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

در این بخش ماژول openpyxl را معرفی می کنیم که می تواند هنگام کار با فایل های اکسل استفاده شود . Excel یک نرم افزار نرم است که توسط مایکروسافت ساخته شده و به کاربران امکان می دهد با صفحات گسترده کار کنند. این ابزاری بسیار پرکاربرد است و فایل هایی که از قالب فایل اکسل استفاده می کنند معمولاً در بسیاری از سازمانها دیده می شوند. در واقع این استاندارد صنعت برای صفحات گسترده است و به همین ترتیب ابزاری بسیار مفید در جعبه ابزار توسعه دهندگان است.

 


در این آموزش، شما یاد می گیرید که چگونه از openpyxl استفاده کنید:

  • صفحات گسترده اکسل را با اطمینان تغییر دهید
  • اطلاعات را از صفحه گسترده استخراج کنید
  • صفحه گسترده ساده یا پیچیده تر از جمله اضافه کردن سبک ها، نمودارها و غیره ایجاد کنید

 

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

 

قبل از شروع

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

 

موارد استفاده عملی

اول از همه، چه زمانی لازم است از بسته ای مانند openpyxl در یک سناریوی واقعی استفاده کنید؟-در زیر چند نمونه مشاهده خواهید کرد، اما در واقع، صدها سناریوی ممکن وجود دارد که این دانش مفید باشد.

وارد کردن محصولات جدید به یک پایگاه داده

شما مسئول فن آوری در یک شرکت فروشگاه آنلاین هستید و رئیس شما نمی خواهد هزینه یک سیستم CMS خوب و گران را پرداخت کند. هر بار که بخواهند محصولات جدیدی را به فروشگاه آنلاین اضافه کنند، با صفحه گسترده اکسل با چند صد ردیف به شما مراجعه می کنند و برای هر یک از آنها، نام محصول، توضیحات، قیمت و موارد دیگر را در اختیار شما قرار می دهد.<اکنون، برای وارد کردن داده ها، باید در هر ردیف صفحه گسترده تکرار شده و هر محصول را به فروشگاه آنلاین اضافه کنید.

فراخوانی داده های پایگاه داده به صفحه گسترده

بگویید شما یک جدول پایگاه داده دارید که در آن تمام اطلاعات کاربران خود را از جمله نام، شماره تلفن، آدرس ایمیل و موارد دیگر ذخیره می کنید.اکنون، تیم بازاریابی می خواهد با همه کاربران تماس بگیرد تا به آنها پیشنهاد تخفیف یا تبلیغاتی ارائه دهد.با این حال، آنها به پایگاه داده دسترسی ندارند یا نمی دانند چگونه از SQL برای استخراج آسان این اطلاعات استفاده کنند.شما چه کمکی میتوانید بکنید؟
شما می توانید با استفاده از openpyxl یک اسکریپت سریع بسازید که روی هر رکورد کاربر تکرار شود و تمام اطلاعات اساسی را در صفحه گسترده اکسل قرار دهید.با این کار می توانید در جشن تولد بعدی شرکتتان یک تکه کیک اضافی به دست آورید!

 افزودن اطلاعات به فایل اکسل موجود

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

 

یادگیری برخی اصطلاحات اساسی اکسل

صفحه گسترده یا کتاب کار (Spreadsheet – Workbook)

صفحه گسترده اصلی ترین پرونده ای است که در حال ایجاد یا کار با آن هستید.

sheet

برای تقسیم انواع مختلف محتوا در یک صفحه گسترده از یک Sheet استفاده می شود.یک صفحه گسترده می تواند یک یا چند صفحه داشته باشد.

ستون
ستون یک خط عمودی است و با یک حرف بزرگ نشان داده می شود

ردیف
یک خط افقی است و با یک عدد نمایش داده می شود.

 

شروع کار با openpyxl

اکنون که از مزایای ابزاری مانند openpyxl آگاه شدید، بیایید به آن بپردازیم و با نصب بسته شروع کنیم.
برای این آموزش، شما باید از Python 3.7 و openpyxl 2.6.2 استفاده کنید. برای نصب بسته می توانید موارد زیر را انجام دهید:

$ pip install openpyxl
پس از نصب بسته ، می توانید یک صفحه گسترده فوق العاده ساده با کد زیر ایجاد کنید:
from openpyxl import Workbook

workbook = Workbook()
sheet = workbook.active

sheet["A1"] = "hello"
sheet["B1"] = "world!"

workbook.save(filename="hello_world.xlsx")
کد بالا باید در پوشه ای که برای اجرای کد از آن استفاده می کنید، فایلی به نام hello_world.xlsx ایجاد کند.

خواندن صفحات گسترده اکسل با openpyxl

بیایید با مهمترین کاری که می توان با صفحه گسترده انجام داد شروع کنیم:

شما از رویکرد ساده برای خواندن صفحه گسترده به مثالهای پیچیده تری می روید که در آن داده ها را می خوانید و آنها را به ساختارهای پایتون مفیدتر تبدیل می کنید

قبل از اینکه در برخی از مثالهای کد قرار بگیرید، باید مجموعه ای فایل اکسل را دانلود یا ایجاد کرده و در جایی به عنوان sample.xlsx ذخیره کنید:

 

یک رویکرد ساده برای خواندن صفحه گسترده اکسل

 

برای شروع، صفحه گسترده نمونه ما را باز کنید:

>>> from openpyxl import load_workbook
>>> workbook = load_workbook(filename="sample.xlsx")
>>> workbook.sheetnames
['Sheet 1']

>>> sheet = workbook.active
>>> sheet
<Worksheet "Sheet 1">

>>> sheet.title
'Sheet 1'

 

در کد بالا، شما ابتدا با استفاده از load_workbook صفحه گسترده نمونه. xlsx را باز می کنید و سپس می توانید از workbook.sheetnames برای دیدن همه ورق های موجود برای کار استفاده کنید.

پس از آن، workbook.active اولین صفحه موجود را انتخاب می کند و در این حالت می بینید که برگه ۱ را به طور خودکار انتخاب می کند. استفاده از این روش ها روش پیش فرض باز کردن صفحه گسترده است و در طول این آموزش بارها آن را مشاهده خواهید کرد. اکنون، پس از باز کردن یک صفحه گسترده ، می توانید به راحتی داده ها را از این طریق بازیابی کنید:

>>> sheet["A1"]
<Cell 'Sheet 1'.A1>

>>> sheet["A1"].value
'marketplace'

>>> sheet["F10"].value
"G-Shock Men's Grey Sport Watch"

 

برای بازگرداندن مقدار واقعی سلول، باید مقدار را انجام دهید. در غیر این صورت، شی main اصلی Cell را دریافت خواهید کرد. برای بازیابی سلول با استفاده از نماد گذاری شاخص می توانید از روش cell نیز استفاده کنید. فراموش نکنید که مقدار Value را اضافه کنید تا مقدار واقعی را بدست آورید و نه یک شی  Cell:

>>> sheet.cell(row=۱۰, column=۶)
<Cell 'Sheet 1'.F10>

>>> sheet.cell(row=۱۰, column=۶).value
"G-Shock Men's Grey Sport Watch"
می بینید که نتایج برگشتی یکسان هستند، مهم نیست که از چه راهی تصمیم بگیرید. با این حال، در این آموزش، شما بیشتر از اولین روش استفاده خواهید کرد: [“A1”].

 

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

موارد بالا سریعترین راه برای باز کردن صفحه گسترده را به شما نشان می دهد.
با این حال، می توانید پارامترهای اضافی را تغییر دهید تا نحوه بارگذاری صفحه گسترده را تغییر دهید.

گزینه های اضافی خواندن

چند آرگومان وجود دارد که می توانید به load_workbook منتقل کنید و نحوه بارگذاری صفحه گسترده را تغییر می دهد.

مهمترین آنها دو Booleans زیر است:

read_only صفحه گسترده ای را در حالت فقط خواندنی بارگذاری می کند که به شما امکان می دهد فایلهای اکسل بسیار بزرگی را باز کنید.

data_only فرمولهای بارگیری را نادیده می گیرد و در عوض فقط مقادیر حاصل را بارگیری می کند.

 


مطالب پیشنهادی برای شما


 

محمد صداقتی

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.