کتابخانه xlwt در پایتون
کتابخانه xlwt یکی از ابزارهای قدیمی و پرکاربرد در زبان برنامهنویسی پایتون است که برای ایجاد و ویرایش فایلهای اکسل با پسوند .xls (فرمت Excel 97-2003) استفاده میشود. این کتابخانه به برنامهنویسان اجازه میدهد تا دادهها را بهصورت برنامهنویسی تولید کرده و در قالب جداول اکسل ذخیره کنند. در این مقاله، بهصورت کامل به معرفی، آموزش، مثالهای کاربردی و بهترین شیوههای استفاده از xlwt خواهیم پرداخت.
ویژگیها و محدودیتهای کتابخانه xlwt
کتابخانه xlwt امکانات مناسبی برای ایجاد فایلهای اکسل در اختیار شما قرار میدهد، اما محدود به فرمت .xls است و از فرمتهای جدیدتر مثل .xlsx پشتیبانی نمیکند. اگرچه کتابخانههای جدیدتر مانند openpyxl و xlsxwriter جایگزینهای مدرنتری هستند، اما xlwt هنوز هم در پروژههای سبک و قدیمی کاربرد دارد.
| مزایا | محدودیتها |
|---|---|
| سبک و سریع برای فایلهای کوچک | پشتیبانی نکردن از فرمت XLSX |
| سادگی در پیادهسازی | عدم پشتیبانی از ویرایش فایلهای موجود |
| امکان تنظیم استایل سلولها (فونت، رنگ و …) | عدم پشتیبانی از ویژگیهای جدید Excel مانند فرمولها و نمودارها |
نصب کتابخانه xlwt
برای نصب این کتابخانه میتوانید از دستور زیر در محیط ترمینال یا CMD استفاده کنید:
pip install xlwt
در صورت استفاده از محیطهایی مانند Anaconda نیز میتوانید از دستور conda install xlwt استفاده کنید.
ایجاد اولین فایل Excel با xlwt
در اولین قدم، بیایید یک فایل اکسل ساده بسازیم که شامل چند سلول با دادههای مختلف است.
import xlwt
# ایجاد یک Workbook (فایل اکسل جدید)
workbook = xlwt.Workbook()
# ایجاد یک شیت جدید با نام Sheet1
sheet = workbook.add_sheet("Sheet1")
# نوشتن داده در سلولها
sheet.write(0, 0, "Name")
sheet.write(0, 1, "Age")
sheet.write(1, 0, "Ali")
sheet.write(1, 1, 25)
# ذخیره فایل
workbook.save("example.xls")
در این مثال، ابتدا یک Workbook جدید ایجاد کردیم. سپس با استفاده از متد add_sheet() یک شیت به نام “Sheet1” اضافه کردیم. تابع write(row, column, value) برای نوشتن مقدار در سلولهای مشخص استفاده میشود. در انتها فایل با نام example.xls ذخیره میشود.
توضیح ساختار کد
- row: شماره سطر از صفر شروع میشود.
- column: شماره ستون از صفر شروع میشود.
- value: مقدار متنی یا عددی برای نوشتن در سلول.
افزودن استایل و فرمتدهی به سلولها
کتابخانه xlwt امکان تنظیم فونت، رنگ، تراز، پسزمینه و سایر ویژگیهای ظاهری سلولها را فراهم میکند. برای این کار از کلاس XFStyle و اشیاء وابسته به آن استفاده میشود.
import xlwt
wb = xlwt.Workbook()
ws = wb.add_sheet('StyledSheet')
# تعریف فونت
font = xlwt.Font()
font.name = 'Times New Roman'
font.bold = True
font.colour_index = 2 # رنگ قرمز
# تعریف استایل
style = xlwt.XFStyle()
style.font = font
# نوشتن با استایل
ws.write(0, 0, 'Hello, xlwt!', style)
wb.save('styled_example.xls')
در این مثال، ابتدا یک شیء فونت ایجاد کردیم، سپس ویژگیهای آن مانند نوع فونت، ضخامت و رنگ را تنظیم کردیم. در نهایت با تعریف XFStyle و انتساب فونت به آن، استایل را روی سلول اعمال کردیم.
نکته مهم:
مقادیر رنگ در xlwt بر اساس شاخصهای داخلی Excel تعیین میشوند، نه بر اساس کدهای RGB. بنابراین برای رنگبندی دقیق بهتر است از رنگهای ازپیشتعریفشده استفاده کنید.
نوشتن دادههای جدولی با حلقهها
یکی از کاربردهای مهم xlwt نوشتن حجم زیادی از دادهها در قالب جدول است. معمولاً از حلقهها برای نوشتن دادهها در سطرها و ستونها استفاده میشود.
import xlwt
data = [
["Name", "Age", "City"],
["Ali", 25, "Tehran"],
["Sara", 30, "Shiraz"],
["Reza", 28, "Mashhad"]
]
wb = xlwt.Workbook()
ws = wb.add_sheet("People")
for row_index, row_data in enumerate(data):
for col_index, value in enumerate(row_data):
ws.write(row_index, col_index, value)
wb.save("people.xls")
در این مثال، دادهها در قالب یک لیست دوبعدی تعریف شدهاند. سپس با استفاده از دو حلقه for تو در تو، هر مقدار در سلول مناسب نوشته میشود. این روش برای تولید گزارشها و خروجیهای دینامیک از پایگاهداده بسیار مفید است.
تنظیم عرض ستونها و ارتفاع سطرها
برای خوانایی بهتر دادهها، میتوانید عرض ستونها و ارتفاع سطرها را تغییر دهید.
import xlwt
wb = xlwt.Workbook()
ws = wb.add_sheet("Dimensions")
ws.write(0, 0, "This is a long text")
# تنظیم عرض ستون (در واحد 1/256 کاراکتر)
ws.col(0).width = 256 * 30
# تنظیم ارتفاع سطر (در واحد twips)
ws.row(0).height_mismatch = True
ws.row(0).height = 20 * 20
wb.save("dimensions.xls")
در این کد، عرض ستون اول به اندازه 30 کاراکتر و ارتفاع سطر اول افزایش یافته است. توجه کنید که واحد عرض در xlwt بر اساس تقسیمبندی داخلی Excel محاسبه میشود (هر کاراکتر معادل 256 واحد است).
استفاده از فرمولها در xlwt
اگرچه xlwt پشتیبانی محدودی از فرمولها دارد، اما میتوانید برخی فرمولهای ساده مانند مجموع، میانگین یا شمارش را اضافه کنید.
import xlwt
wb = xlwt.Workbook()
ws = wb.add_sheet("Formula")
# نوشتن دادهها
ws.write(0, 0, 10)
ws.write(1, 0, 20)
ws.write(2, 0, 30)
# افزودن فرمول مجموع
ws.write(3, 0, xlwt.Formula("SUM(A1:A3)"))
wb.save("formula.xls")
در این مثال از xlwt.Formula() برای وارد کردن یک فرمول Excel استفاده کردهایم. این ویژگی در پروژههایی که به محاسبات ساده نیاز دارند مفید است.
نوشتن تاریخ و زمان در Excel
نوشتن تاریخ در xlwt نیازمند تنظیم فرمت مخصوص است، زیرا Excel مقادیر تاریخ را بهصورت عددی ذخیره میکند.
import xlwt
import datetime
wb = xlwt.Workbook()
ws = wb.add_sheet("Dates")
style = xlwt.XFStyle()
style.num_format_str = 'DD-MM-YYYY'
ws.write(0, 0, datetime.date.today(), style)
wb.save("dates.xls")
در اینجا، از num_format_str برای تعریف قالب تاریخ استفاده شده است. اگر این فرمت تعریف نشود، تاریخ به صورت عددی (تعداد روز از یک مبدا خاص) نمایش داده خواهد شد.
بهترین شیوهها (Best Practices) در کار با xlwt
- همیشه از try-except برای مدیریت خطاهای نوشتن فایل استفاده کنید.
- قبل از ذخیره فایل، مسیر خروجی را بررسی کنید تا از خطای دسترسی جلوگیری شود.
- در پروژههای جدید ترجیحاً از
xlsxwriterیاopenpyxlاستفاده کنید، مگر اینکه نیاز به تولید فایل.xlsداشته باشید. - برای دادههای حجیم، ابتدا دادهها را در حافظه آماده کنید سپس در یک حلقه بنویسید تا عملکرد بهتر شود.
مقایسه xlwt با کتابخانههای مشابه
| کتابخانه | پشتیبانی از فرمت | قابلیت ویرایش فایل موجود | ویژگیهای بصری |
|---|---|---|---|
| xlwt | .xls | خیر | محدود |
| openpyxl | .xlsx | بله | پیشرفته |
| xlsxwriter | .xlsx | خیر | بسیار قدرتمند |
نتیجهگیری
کتابخانه xlwt همچنان ابزاری مفید برای کار با فایلهای Excel قدیمی است، مخصوصاً در پروژههایی که نیاز به تولید سریع و سبک فایلهای .xls دارند. با وجود محدودیتهای آن نسبت به ابزارهای مدرنتر، درک مفاهیم و منطق پشت این کتابخانه برای هر برنامهنویس پایتون ضروری است. یادگیری xlwt نهتنها درک بهتری از ساختار دادههای جدولی به شما میدهد، بلکه پایهای برای درک ابزارهای پیشرفتهتر مانند openpyxl فراهم میکند.
آیا این مطلب برای شما مفید بود ؟




