मुख्य सामग्री पर जाएँ

openpyxl: Python के साथ Excel कार्यों का स्वचालन

openpyxl का उपयोग करके Excel फ़ाइलें पढ़ना, लिखना और स्टाइल करना सीखें। आधुनिक Excel फ़ॉर्मैट्स (.xlsx) और उन्नत सुविधाओं के साथ काम करने के व्यावहारिक उदाहरण जानें।
· 8 मि॰ पढ़ें

AI के साथ खोजें

openpyxl एक कुशल Python लाइब्रेरी है जो आपको Excel 2007 में पेश किए गए आधुनिक XML-आधारित फ़ॉर्मैट्स (.xlsx, .xlsm) में Excel फ़ाइलें पढ़ने और लिखने में सक्षम बनाती है, और Excel 2010 से आगे की उन्नत सुविधाओं का पूरा समर्थन देती है। इसे मूल रूप से PHPExcel का Python पोर्ट के रूप में विकसित किया गया था और आज भी सक्रिय डेवलपर समुदाय द्वारा मेंटेन किया जा रहा है। यह लाइब्रेरी डेटा ऑटोमेशन, रिपोर्टिंग और फ़ॉर्मैटिंग वर्कफ़्लोज़ में बेहतरीन है, जिससे यह विशेष रूप से उन उपयोगकर्ताओं के लिए उपयोगी है जिन्हें Excel फ़ाइलों के साथ काम करना होता है, भले ही उनके सिस्टम पर Excel इंस्टॉल न हो।

कई संगठन openpyxl का उपयोग वित्तीय रिपोर्टों को स्वचालित करने, डेटाबेस एक्सपोर्ट से चार्ट जनरेट करने, और मार्केटिंग रिपोर्टों में फ़ॉर्मूले व फ़ॉर्मैटिंग लागू करने के लिए करते हैं। यह लाइब्रेरी केवल Python कोड के माध्यम से Excel फ़ाइलों पर सूक्ष्म-स्तरीय नियंत्रण प्रदान करती है।

openpyxl क्या है?

openpyxl विशेष रूप से Excel 2010+ फ़ॉर्मैट्स के लिए नैटिव समर्थन प्रदान करने के लिए डिज़ाइन किया गया है। यह लाइब्रेरी कई फ़ाइल फ़ॉर्मैट्स के साथ काम करती है:

  •  .xlsx - Excel वर्कबुक

  •  .xlsm - मैक्रोज़ वाली Excel वर्कबुक

  •  .xltx - Excel टेम्पलेट

  •  .xltm - मैक्रोज़ वाला Excel टेम्पलेट

openpyxl का एक बड़ा लाभ यह है कि इसे आपके कंप्यूटर पर Excel इंस्टॉल होने की आवश्यकता नहीं होती। यह सर्वर वातावरण, स्वचालित रिपोर्टिंग सिस्टम और डेटा प्रोसेसिंग पाइपलाइनों के लिए आदर्श बनाता है। कई अन्य Python लाइब्रेरियाँ, जिनमें pandas भी शामिल है, Excel इंटरफ़ेस के रूप में openpyxl का उपयोग करती हैं, जो इसकी विश्वसनीयता और कार्यक्षमता को दर्शाता है।

openpyxl को इंस्टॉल और इम्पोर्ट करना

pip का उपयोग करके openpyxl को इंस्टॉल करना सरल है:

pip install openpyxl

अविश्वसनीय स्रोतों से फ़ाइलों के साथ काम करते समय सुरक्षा बढ़ाने के लिए, आप वैकल्पिक defusedxml पैकेज भी इंस्टॉल कर सकते हैं:

pip install defusedxml

अपने Python स्क्रिप्ट में openpyxl का उपयोग करने के लिए आवश्यक क्लास इम्पोर्ट करें:

from openpyxl import Workbook, load_workbook

मुख्य अवधारणाएँ और पारिभाषिक शब्दावली

openpyxl का प्रभावी उपयोग करने के लिए, Excel की बुनियादी संरचना समझें:

  • Workbook: स्वयं Excel फ़ाइल, जिसमें एक या अधिक वर्कशीट होती हैं
  • Worksheet: एक वर्कबुक के भीतर व्यक्तिगत टैब/शीट
  • Cell: वर्कशीट में व्यक्तिगत डेटा बिंदु, जिन्हें कॉलम अक्षर और पंक्ति संख्या से पहचाना जाता है (उदा., "A1")
  • Row: क्षैतिज कोशिकाओं की पंक्ति, संख्याओं से पहचानी जाती है (1, 2, 3...)
  • Column: ऊर्ध्वाधर कोशिकाओं का स्तंभ, अक्षरों से पहचाना जाता है (A, B, C...)

openpyxl में, आप कोशिकाओं को इस प्रकार संदर्भित कर सकते हैं:

  • Excel शैली संदर्भ: sheet[“A1”]

  • पंक्ति-स्तंभ इंडेक्सिंग: sheet.cell(row=1, column=1) (ध्यान दें: openpyxl 1-आधारित इंडेक्सिंग का उपयोग करता है, 0-आधारित नहीं)

openpyxl के साथ Excel फ़ाइलें पढ़ना

यहाँ एक व्यावहारिक उदाहरण है जो दिखाता है कि Excel फ़ाइल से डेटा कैसे पढ़ें:

वर्कबुक लोड करें और खोजें

from openpyxl import load_workbook

# Load the workbook - use read_only=True for large files
wb = load_workbook('sample.xlsx', read_only=False, data_only=False)
# data_only=True reads values instead of formulas

वैकल्पिक पैरामीटर नियंत्रित करते हैं कि वर्कबुक कैसे लोड होती है:

  • read_only=True बड़े फ़ाइलों के लिए प्रदर्शन में सुधार करता है लेकिन संपादन क्षमताएँ सीमित करता है

  • data_only=True फ़ॉर्मूलों के बजाय गणना किए गए मान लौटाता है

डेटा के माध्यम से इटेरेट करें

कई कोशिकाओं को कुशलतापूर्वक प्रोसेस करने के लिए इटरेशन मेथड्स का उपयोग करें:

# Iterate through rows
for row in sheet.iter_rows(min_row=1, max_row=5, values_only=True):
    print(row)  # Returns a tuple of values

# Iterate through columns
for column in sheet.iter_cols(min_col=1, max_col=3, values_only=True):
    print(column)  # Returns a tuple of values

# Access a range of cells
cell_range = sheet["A1:C5"]
for row in cell_range:
    for cell in row:
        print(cell.value)

Python डेटा संरचनाओं में रूपांतरित करें

आप Excel डेटा को आसानी से Python डेटा संरचनाओं में बदल सकते हैं:

# Convert worksheet data to a list of dictionaries
def sheet_to_dict(sheet):
    data = []
    headers = [cell.value for cell in sheet[1]]  # First row as headers
    
    for row in sheet.iter_rows(min_row=2, values_only=True):
        row_data = {}
        for key, value in zip(headers, row):
            row_data[key] = value
        data.append(row_data)
    
    return data

# Example usage
data_dict = sheet_to_dict(sheet)
print(data_dict)

openpyxl के साथ Excel फ़ाइलें लिखना

openpyxl के साथ Excel फ़ाइलें बनाना और संशोधित करना उतना ही सीधा है।

एक वर्कबुक बनाएँ और बुनियादी डेटा लिखें

from openpyxl import Workbook

# Create a new workbook
wb = Workbook()
sheet = wb.active

# Rename the sheet
sheet.title = "Data"

# Write values to cells
sheet["A1"] = "Name"
sheet["B1"] = "Age"
sheet["C1"] = "City"

# Add data
data = [
    ["Alice", 25, "New York"],
    ["Bob", 30, "San Francisco"],
    ["Charlie", 35, "Chicago"]
]

for row_idx, row_data in enumerate(data, start=2):
    for col_idx, cell_value in enumerate(row_data, start=1):
        sheet.cell(row=row_idx, column=col_idx, value=cell_value)

# Save the workbook
wb.save("new_workbook.xlsx")

मौजूदा Excel फ़ाइलों में संशोधन करें

from openpyxl import load_workbook

# Load an existing workbook
wb = load_workbook("existing_file.xlsx")
sheet = wb.active

# Modify cell values
sheet["D1"] = "Updated Data"
sheet.cell(row=5, column=2).value = 42

# Save to a new file (to preserve the original)
wb.save("modified_file.xlsx")

डायनेमिक रूप से डेटा जोड़ें

.append() मेथड नई पंक्तियाँ जोड़ना आसान बनाता है:

from openpyxl import Workbook

wb = Workbook()
sheet = wb.active

# Add headers
sheet.append(["Date", "Product", "Quantity", "Price"])

# Add multiple rows of data
sales_data = [
    ["2025-04-01", "Laptop", 5, 1200],
    ["2025-04-01", "Mouse", 10, 25],
    ["2025-04-02", "Monitor", 3, 350]
]

for row in sales_data:
    sheet.append(row)

wb.save("sales_report.xlsx")

Excel में फ़ॉर्मैटिंग और स्टाइलिंग

openpyxl सेल फ़ॉर्मैटिंग और स्टाइलिंग के लिए व्यापक विकल्प प्रदान करता है।

फ़ॉन्ट, बॉर्डर और एलाइनमेंट जोड़ें

from openpyxl import Workbook
from openpyxl.styles import Font, Alignment, Border, Side, PatternFill, NamedStyle

wb = Workbook()
sheet = wb.active

# Create a header style
header_style = NamedStyle(name="header_style")
header_style.font = Font(bold=True, size=12, color="FFFFFF")
header_style.fill = PatternFill(fill_type="solid", start_color="366092")
header_style.alignment = Alignment(horizontal="center", vertical="center")
header_style.border = Border(
    bottom=Side(border_style="medium", color="000000"),
    left=Side(border_style="thin"),
    right=Side(border_style="thin"),
    top=Side(border_style="thin")
)

# Add the style to the workbook
wb.add_named_style(header_style)

# Apply the style to header row
headers = ["ID", "Product", "Category", "Price"]
for col_idx, header in enumerate(headers, start=1):
    cell = sheet.cell(row=1, column=col_idx, value=header)
    cell.style = "header_style"

# Basic styling without named styles
sheet["A2"].font = Font(bold=True, italic=True)
sheet["A3"].alignment = Alignment(horizontal="center")
sheet["A4"].border = Border(bottom=Side(border_style="thin"))

wb.save("styled_workbook.xlsx")

कंडीशनल फ़ॉर्मैटिंग

कंडीशनल फ़ॉर्मैटिंग आपको सेल मानों के आधार पर स्टाइल लागू करने देती है:

from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill
from openpyxl.styles.differential import DifferentialStyle
from openpyxl.formatting.rule import Rule, ColorScaleRule

wb = Workbook()
sheet = wb.active

# Add sample data
for row in range(1, 11):
    for col in range(1, 5):
        sheet.cell(row=row, column=col, value=(row-1)*4 + col)

# Add color scale (green to red gradient)
color_scale = ColorScaleRule(
    start_type="min", start_color="63BE7B",  # Green
    mid_type="percentile", mid_value=50, mid_color="FFEB84",  # Yellow
    end_type="max", end_color="F8696B"  # Red
)
sheet.conditional_formatting.add("A1:D10", color_scale)

# Add a rule for values less than 5
red_text = Font(color="FF0000")
red_fill = PatternFill(start_color="FFCCCC", end_color="FFCCCC", fill_type="solid")
dxf = DifferentialStyle(font=red_text, fill=red_fill)
rule = Rule(type="cellIs", operator="lessThan", formula=["5"], dxf=dxf)
sheet.conditional_formatting.add("A1:D10", rule)

wb.save("conditional_format.xlsx")

उन्नत सुविधाएँ

openpyxl कई उन्नत Excel सुविधाओं का समर्थन करता है जो जटिल स्प्रेडशीट कार्यों में मदद करती हैं।

फ़ॉर्मूले जोड़ना

from openpyxl import Workbook

wb = Workbook()
sheet = wb.active

# Add data
for row in range(1, 6):
    sheet.cell(row=row, column=1, value=row)

# Add formulas
sheet["B1"] = "=A1*2"
sheet["B2"] = "=A2*2"
sheet["C1"] = "=SUM(A1:A5)"
sheet["C2"] = "=AVERAGE(A1:A5)"
sheet["C3"] = "=COUNTIF(A1:A5,\">2\")"

wb.save("formulas.xlsx")

ध्यान दें: load_workbook() का उपयोग करते समय, openpyxl फ़ॉर्मूलों की स्वचालित गणना नहीं करता। गणना किए गए मान देखने के लिए load_workbook(“file.xlsx”, data_only=True) का उपयोग करें।  

चार्ट सम्मिलित करें

openpyxl विभिन्न प्रकार के चार्ट बना सकता है:

from openpyxl import Workbook
from openpyxl.chart import BarChart, LineChart, Reference

wb = Workbook()
sheet = wb.active

# Add data
months = ["Jan", "Feb", "Mar", "Apr", "May"]
values = [30, 45, 37, 50, 62]

for i, (month, value) in enumerate(zip(months, values), start=1):
    sheet.cell(row=i, column=1, value=month)
    sheet.cell(row=i, column=2, value=value)

# Create a bar chart
bar_chart = BarChart()
bar_chart.title = "Monthly Sales"
bar_chart.x_axis.title = "Month"
bar_chart.y_axis.title = "Sales"

# Define the data range
data = Reference(sheet, min_col=2, min_row=1, max_row=5)
categories = Reference(sheet, min_col=1, min_row=1, max_row=5)

# Add the data to the chart
bar_chart.add_data(data)
bar_chart.set_categories(categories)

# Add the chart to the worksheet
sheet.add_chart(bar_chart, "D1")

# Create a line chart on the same data
line_chart = LineChart()
line_chart.title = "Monthly Sales Trend"
line_chart.add_data(data)
line_chart.set_categories(categories)
sheet.add_chart(line_chart, "D15")

wb.save("charts.xlsx")

छवियाँ सम्मिलित करें

from openpyxl import Workbook
from openpyxl.drawing.image import Image

wb = Workbook()
sheet = wb.active

# Add an image
img = Image("logo.png")

# Resize the image (optional)
img.width = 150
img.height = 75

# Add the image to cell A1
sheet.add_image(img, "A1")

wb.save("with_image.xlsx")

ध्यान दें: छवियों के साथ काम करने के लिए आपको Pillow लाइब्रेरी इंस्टॉल करनी होगी: pip install pillow

शीट, पंक्ति और स्तंभ प्रबंधन

openpyxl आपकी Excel फ़ाइलों की संरचना प्रबंधित करने के लिए फ़ंक्शन्स प्रदान करता है:

शीट बनाना और हटाना

from openpyxl import Workbook

wb = Workbook()

# Create new sheets
wb.create_sheet("Data")
wb.create_sheet("Summary", 0)  # Add at the beginning

# Remove a sheet
wb.remove(wb["Sheet"])  # Remove the default sheet

print(wb.sheetnames)  # ['Summary', 'Data']

wb.save("multiple_sheets.xlsx")

शीट का नाम बदलना

wb = Workbook()
sheet = wb.active
sheet.title = "Sales Report"
wb.save("renamed_sheet.xlsx")

वर्कशीट्स की कॉपी करना

from openpyxl import Workbook

wb = Workbook()
source = wb.active
source.title = "Original"

# Add some data to copy
source["A1"] = "Test Data"

# Create a copy
wb.copy_worksheet(source)

# The copied sheet will have "Copy of Original" name
wb.save("copied_sheet.xlsx")

पंक्तियाँ और स्तंभ जोड़ना व हटाना

from openpyxl import Workbook

wb = Workbook()
sheet = wb.active

# Add some data
for i in range(1, 6):
    for j in range(1, 4):
        sheet.cell(row=i, column=j, value=f"R{i}C{j}")

# Insert a row at position 2
sheet.insert_rows(2)

# Insert multiple rows
sheet.insert_rows(5, 3)  # Insert 3 rows at position 5

# Insert a column at position 2
sheet.insert_cols(2)

# Delete rows
sheet.delete_rows(7, 2)  # Delete 2 rows starting at row 7

# Delete columns
sheet.delete_cols(3)  # Delete column C

wb.save("modified_structure.xlsx")

फ्रीज़ पेन और फ़िल्टर जोड़ना

from openpyxl import Workbook

wb = Workbook()
sheet = wb.active

# Add headers
headers = ["ID", "Name", "Department", "Salary"]
for col_idx, header in enumerate(headers, start=1):
    sheet.cell(row=1, column=col_idx, value=header)

# Add data
data = [
    [1, "John Smith", "HR", 55000],
    [2, "Jane Doe", "IT", 65000],
    [3, "Bob Johnson", "Finance", 60000]
]
for row_idx, row_data in enumerate(data, start=2):
    for col_idx, value in enumerate(row_data, start=1):
        sheet.cell(row=row_idx, column=col_idx, value=value)

# Freeze the header row
sheet.freeze_panes = "A2"

# Add autofilter
sheet.auto_filter.ref = "A1:D4"

wb.save("freeze_and_filter.xlsx")

सीमाएँ और सामुदायिक प्रतिक्रिया

यद्यपि openpyxl सुविधाओं से समृद्ध है, उपयोगकर्ताओं ने कुछ सीमाएँ नोट की हैं:

  • Named ranges के लिए सीमित समर्थन
  • उन्नत सुविधाओं के लिए डॉक्यूमेंटेशन उदाहरण कभी-कभी कम मिलते हैं
  • बहुत बड़ी फ़ाइलों के लिए प्रदर्शन धीमा हो सकता है (हालाँकि read-only मोड मदद करता है)

इन सीमाओं के बावजूद, openpyxl को मज़बूत सामुदायिक समर्थन प्राप्त है। समस्याएँ GitLab ट्रैकर पर रिपोर्ट की जा सकती हैं, और पेशेवर सहायता कभी-कभी उपलब्ध होती है। अधिक जानकारी और सहायता के लिए, आप निम्न संदर्भ देख सकते हैं:

निष्कर्ष

openpyxl Python-आधारित Excel ऑटोमेशन के लिए एक स्थापित लाइब्रेरी है, जो Excel फ़ाइलों को पढ़ने, लिखने और स्टाइल करने का पूर्ण समर्थन देती है। यह स्वचालित वर्कफ़्लोज़ में स्प्रेडशीट आउटपुट पर विस्तृत नियंत्रण सक्षम करती है—व्यक्तिगत कोशिकाओं में बदलाव से लेकर चार्ट बनाने और जटिल फ़ॉर्मैटिंग लागू करने तक।

जो उपयोगकर्ता प्रोग्रामैटिक रूप से Excel फ़ाइलें जनरेट या विश्लेषित करना चाहते हैं, विशेषकर रिपोर्ट बनाने या टैबुलर डेटा प्रोसेस करने के दौरान, उनके लिए openpyxl एक व्यापक टूलकिट प्रदान करता है। Excel इंस्टॉलेशन की आवश्यकता के बिना काम करने की इसकी क्षमता इसे सर्वर वातावरण और स्वचालित डेटा पाइपलाइनों के लिए विशेष रूप से मूल्यवान बनाती है।

चाहे आप वित्तीय मॉडल बना रहे हों, डेटा का विश्लेषण कर रहे हों, या रिपोर्ट जनरेट कर रहे हों—openpyxl आपको Python कोड के माध्यम से Excel फ़ाइलों को कुशलतापूर्वक संभालने के उपकरण देता है।

Vinod Chugani

लेखक

Vinod Chugani

विनोद चुगानी ने टोक्यो में जेपीमॉर्गन के सबसे कम उम्र के हेज फंड सेल्स डेस्क हेड के रूप में अपना करियर शुरू किया और बाद में लेहमन ब्रदर्स में व्यक्तिगत बिक्री का रिकॉर्ड बनाया, फिर 30 देशों में फैला एक इलेक्ट्रॉनिक्स डिस्ट्रीब्यूशन व्यवसाय बनाया, जिसकी आय SG$100 मिलियन से आगे बढ़ी, इसके बाद उन्होंने डेटा की ओर रुख किया। ड्यूक में अर्थशास्त्र के स्नातक और NYC डेटा साइंस अकादमी के पूर्व छात्र, वे मेवन पर ह्यूगो बोव्न-एंडरसन के Building AI Applications कोर्स के लिए 100+ आवेदनों में से तीन छात्रवृत्ति प्राप्तकर्ताओं में से एक थे। आज, वे DataCamp, KDnuggets, Machine Learning Mastery, और Statology के लिए सांख्यिकी से लेकर एजेंटिक एआई तक के विषयों पर लिखते हैं, और NYC डेटा साइंस अकादमी में डेटा प्रोफेशनलों को मेंटर करते हैं, उनके नाम पर 1,000 से अधिक एक-से-एक सत्र हैं।

 

openpyxl FAQs

openpyxl किन फ़ाइल प्रकारों का समर्थन करता है?

openpyxl कई Excel फ़ॉर्मैट्स का समर्थन करता है, जिनमें .xlsx, .xlsm, .xltx, और xltm शामिल हैं। यह Excel 2003 और उससे पहले उपयोग किए गए पुराने .xls फ़ॉर्मैट का समर्थन नहीं करता।

क्या openpyxl Excel फ़ॉर्मूलों को पढ़ और इवैल्युएट कर सकता है?

openpyxl फ़ॉर्मूले पढ़ और लिख सकता है, लेकिन उन्हें इवैल्युएट नहीं करता। फ़ॉर्मूला परिणाम देखने के लिए, फ़ाइल को पहले Excel में खोलकर सेव करना होगा।

क्या openpyxl उपयोग करने के लिए मुझे Microsoft Excel इंस्टॉल करना होगा?

नहीं, openpyxl पूरी तरह Python में काम करता है और आपकी मशीन पर Excel इंस्टॉल होने की आवश्यकता नहीं होती।

​क्या मैं openpyxl के साथ Excel में छवियाँ डाल सकता/सकती हूँ?

हाँ, लेकिन आपके पास Pillow लाइब्रेरी इंस्टॉल होनी चाहिए, और add_image() कॉल करते समय इमेज फ़ाइल डिस्क पर मौजूद होनी चाहिए।

क्या openpyxl बड़े Excel फ़ाइलों के लिए उपयुक्त है?

हाँ, विशेष रूप से read_only=True मोड का उपयोग करते समय, जो बड़े स्प्रेडशीट्स पढ़ने के लिए प्रदर्शन में सुधार करता है।

विषय