Skip to content
cccskills
FreePublished on GitHub

excel-unmerge-before-write

Handle merged cells before filling Excel templates with openpyxl, a Python library for spreadsheets. This skill shows how to inspect merged ranges, unmerge the required areas, write values, and save the workbook without merged-cell write errors.

OriginalShow the original description

Unmerge merged cells in openpyxl worksheets before writing values to avoid AttributeError

Works withExcel
See how to install

Good for

  • Fill an Excel template containing merged cells
  • Resolve AttributeError when writing cell values
  • Unmerge ranges across multiple worksheets
  • Check template layout after unmerging cells

Files included (2)

  • SKILL.md3.2 KB
  • .skill_id40 B

SKILL.md (original)

Review the instructions the agent will receive before you install.

Excel Unmerge Before Write

When automating Excel file population with openpyxl, merged cells in templates can cause write failures. This skill provides the pattern to safely handle merged ranges before populating data.

When to Use

  • Working with Excel templates that have pre-existing merged cells
  • Getting AttributeError when trying to write values to certain cells
  • Needing to populate data in areas that may contain merged ranges

Core Pattern

Before writing values to cells in a worksheet, identify and unmerge any overlapping ranges:

from openpyxl import load_workbook

# Load the workbook
wb = load_workbook('template.xlsx')
ws = wb.active

# Unmerge specific ranges before writing
ws.unmerge_cells('A46:C46')
ws.unmerge_cells('E46:F46')
ws.unmerge_cells('I46:K46')

# Now safely write values
ws['A46'] = 'Value 1'
ws['E46'] = 'Value 2'
ws['I46'] = 'Value 3'

wb.save('output.xlsx')

Step-by-Step Instructions

  1. Identify merged ranges in your target worksheet:

    print(ws.merged_cells.ranges)
    
  2. Unmerge relevant ranges before writing any data to those areas:

    for merged_range in ws.merged_cells.ranges:
        # Optionally filter by area if you only need specific ranges
        ws.unmerge_cells(str(merged_range))
    
  3. Write your data to the now-unmerged cells:

    ws.cell(row=46, column=1, value='Your data')
    
  4. Save the workbook:

    wb.save('output.xlsx')
    

Handling Multiple Worksheets

If your workbook has multiple sheets with merged cells:

for sheet_name in wb.sheetnames:
    ws = wb[sheet_name]
    for merged_range in list(ws.merged_cells.ranges):
        ws.unmerge_cells(str(merged_range))

Common Errors

ErrorCauseSolution
AttributeError on cell writeWriting to merged cellCall unmerge_cells() first
KeyError on rangeInvalid range stringUse exact range format like 'A1:B2'
Data overwrites neighborsUnmerged too broadlyUnmerge only needed ranges

Best Practices

  • Unmerge early: Call unmerge_cells() immediately after loading the worksheet, before any write operations
  • List before unmerging: Capture ws.merged_cells.ranges before unmerging if you need to know what was merged
  • Preserve formatting: If merge was for visual formatting, consider re-applying merges after data population if needed
  • Test ranges: Verify unmerged ranges don't break template layout expectations

Complete Example

from openpyxl import load_workbook

def populate_excel_template(template_path, output_path, data_dict):
    """Populate an Excel template, handling merged cells safely."""
    wb = load_workbook(template_path)
    ws = wb.active
    
    # Unmerge all cells that might conflict with data writes
    for merged_range in list(ws.merged_cells.ranges):
        ws.unmerge_cells(str(merged_range))
    
    # Populate data
    for cell_ref, value in data_dict.items():
        ws[cell_ref] = value
    
    wb.save(output_path)
    return output_path

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Prepare audio stems, the separate parts of a track, for mixing by matching their durations with silence, loops, or crossfades. Verify each generated and processed file before moving to the next production step.

  • Match audio parts with different durations
  • Extend drums and melodic parts using suitable methods
  • Check audio specifications before mixing
HKUDS/OpenSpace7.8KUpdated Aug 13, 2026

Produce audio in separate stems, meaning individual instrument tracks, and verify each output as you go. Align track lengths with silence, loops, or crossfades, then apply effects, mix a master, and package the files.

  • Align instrument tracks to a reference audio file
  • Choose how to extend tracks that are too short
  • Verify audio properties after generation and effects
HKUDS/OpenSpace7.8KUpdated Aug 13, 2026

Build serverless endpoints that relay external API requests for a dashboard while keeping API keys on the server. Includes Vercel examples for input checks, caching, cross-origin access, and consistent JSON responses.

  • Connect a dashboard to external APIs without exposing API keys
  • Create endpoints for stock quotes and news
  • Standardize API responses and error handling
HKUDS/OpenSpace7.8KUpdated Aug 13, 2026

Produce a master track and separate audio parts through a structured Python workflow. Apply filters and reverb, export WAV files with consistent settings, package them in a ZIP archive, and check that the deliverables meet the requested specifications.

  • Export a master track with separate audio parts
  • Apply filters and reverb to audio
  • Check duration and format across deliverables
HKUDS/OpenSpace7.8KUpdated Aug 13, 2026

Keep document creation moving when web searches and page retrieval repeatedly fail. The skill preserves the original task, uses the model’s existing knowledge, and clearly identifies information that could not be checked against external sources.

  • Continue drafting after repeated web retrieval failures
  • Preserve task requirements during network errors
  • Mark information that could not be externally verified
HKUDS/OpenSpace7.8KUpdated Aug 13, 2026

When Python execution repeatedly fails in execute_code_sandbox, use a file-based alternative: save the script, run it through the shell, and capture results or errors. The guidance covers paths, imports, timeouts, structured output, and optional cleanup.

  • Retry Python work through the shell after repeated sandbox failures
  • Run longer tasks with an adjusted timeout
  • Execute Python work that needs multiple files or system utilities
HKUDS/OpenSpace7.8KUpdated Aug 13, 2026

See all skills by HKUDS

Report a problem with this skill