فهرست بستن

معرفی کتابخانه برای دستکاری فایلهای وُرد با استفاده از پایتون

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

بسم الله الرحمن الرحیم

کتابخانه python-docx مخصوص ویرایش اطلاعات فایلهای ورد docx ارائه شده است. با استفاده از این کتابخانه می توان بطور اتوماتیک فایلهای ورد را ایجاد کرد و اطلاعات مورد نظر را در آنها نوشت و یا اینکه اطلاعات مشخصی را از آنها خواند. برای آشنایی با نحوه استفاده از این کتابخانه به مثال زیر توجه نمایید. در این مثال یک فایل ورد با استفاده از کتابخانه python-docx ایجاد می گردد:

from docx import Document
from docx.shared import Inches

document = Document()

document.add_heading('Document Title', 0)

p = document.add_paragraph('A plain paragraph having some ')
p.add_run('bold').bold = True
p.add_run(' and some ')
p.add_run('italic.').italic = True

document.add_heading('Heading, level 1', level=1)
document.add_paragraph('Intense quote', style='Intense Quote')

document.add_paragraph(
    'first item in unordered list', style='List Bullet'
)
document.add_paragraph(
    'first item in ordered list', style='List Number'
)

document.add_picture('monty-truth.png', width=Inches(1.25))

records = (
    (۳, '۱۰۱', 'Spam'),
    (۷, '۴۲۲', 'Eggs'),
    (۴, '۶۳۱', 'Spam, spam, eggs, and spam')
)

table = document.add_table(rows=1, cols=3)
hdr_cells = table.rows[0].cells
hdr_cells[0].text = 'Qty'
hdr_cells[1].text = 'Id'
hdr_cells[2].text = 'Desc'
for qty, id, desc in records:
    row_cells = table.add_row().cells
    row_cells[0].text = str(qty)
    row_cells[1].text = id
    row_cells[2].text = desc

document.add_page_break()

document.save('demo.docx')

بعد از فراخوانی اشیاء و توابع مورد نیاز از کتابخانه‌ها، یک پرونده ورد از کلاس Document ساخته شده است. بعد از آن ابتدا به ساکن، یک عنوان به پرونده ورد اضافه شده است. ورودی اول تابع add_heading متن عنوان و ورودی دوم سطح عنوان می باشد. سطح عنوان تعیین کننده استایل عنوان می باشد. اگر سطح برابر صفر باشد، استایل عنوان Titleو اگر سطح برابر یک باشد استایل عنوان Heading 1 خواهد بود و به ازای سطحهای بالاتر شماره Heading افزایش خواهد یافت. در ادامه به شی document یک پاراگراف اضافه شده است. پاراگراف با نام متغیر p تعریف شده است و در ادامه با استایل Bold، معمولی و Italic متنهایی به پاراگراف اضافه شده است. در ادامه عنوان با سطح ۱ و پاراگرافی با استایل Intense quote به پرونده ورد اضافه شده است. دو پاراگراف بعدی اضافه شده به ترتیب لیست گلوله‌ای و لیست شماره‌ای تعریف و اضافه شده اند.

برای اضافه کردن تصویر به فایل ورد از دستور add_picture استفاده شده است. عرض تصویر با عنصر فراخوانی شده Inches تعیین شده است. مورد آخری که قبل از افزوده شدن page break و ذخیره سازی فایل به پرونده ورد اضافه شده است یک جدول می باشد. برای اضافه کردن جدول ابتدا عناصر آن بصورت tupleـی از tuple ایجاد شده است. بعد از تعریف عناصر جدول، جدول با نام table و با استفاده از تابع add_table و ورودی های تعداد سطر و ستون ایجاد شده است. بعد از تعریف کلی جدول، اقدام به ایجاد سطر عناوین انجام گرفته شده است. hdr_cells برابر سلولها سطر اول جدول تعریف شده و با استفاده از آن، متن هر یک از سه سلول سطر اول مقدار دهی شده است. با این کار سطر عناوین جدول تکمیل گشته است. بعد از آن داخل یک حلقه با انتخاب هر سطر از داده ها و اضافه کردن سطر جدید به جدول مثل اتفاقی که هنگام ایجاد سطر عناوین جدول افتاد جدول تکمیل می گردد.

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

import docx

doc = docx.Document("test.docx")
for para in doc.paragraphs:
    print para.text

خب همانطوری که می بینید مثال خیلی جمع و جوری زده شده است. فایل ورد با نام test.docx باز شده و با یک حلقه تمام پاراگرافهای آن خوانده شده و متن پاراگراف در خروجی چاپ می گردد. احتمالا اگر شما می خواهید یک فایل ورد را باز کنید و اطلاعات آن را بخوانید، دنبال پاراگرافی خاص می گردید. خصوصیت ویژه این پاراگراف می تواند Bold بودن، Italic بودن یا داشتن استایل خاص باشد. همه این موارد با استفاده از خصوصیات شی paragraph قابل دسترسی می باشد. برای مطالعه بیشتر می توانید به راهنمای ارائه شده برای این کتابخانه در آدرس زیر مراجعه نمایید:

python-docx