Best used with an AI agent

40+ live apps, open data APIs, MCP servers, and 200+ guides - more than anyone wants to click through. Point your AI here and it reads the whole map and does the work: finds the tool, pulls the data, runs the analysis, and hands you the links.

Here for the open-source code? Your agent finds the right repo for you - and can even clone and deploy it.

Prefer to explore on your own? Go right ahead.

Paste this to Claude Code, Codex, or any AI agent:
Go to tigzig.com and read tigzig.com/llms.txt. It is a practitioner toolkit - 40+ analytics apps, open no-auth data APIs, MCP servers, open-source repos (github.com/amararun), and 200+ build guides. Help me [your task]. Surface the exact links; where there is an API or MCP, call it directly; and if I want to self-host, find the repo and help me deploy it.

How to Extract Python Code from xlwings Lite Excel Files

Published: February 20, 2026

You can do this yourself or just copy paste the full post to your AI Coder (Claude Code , Cursor, Gemini etc) and it will do it for you in seconds.

Edit: Felix Zumstein pointed out a simpler way which I had missed - just click "Don't Trust" when the warning pops up and copy the code from the editor. Matter over. If you still want to extract the code without opening Excel at all, or want to understand where xlwings Lite stores its files, read on.

Purpose

Extract main.py and requirements.txt from an xlwings Lite .xlsx file without opening it in Excel. Useful for inspecting code before opening untrusted files, or for extracting scripts for version control.

How it works

What gets extracted

Extraction script

Save as extract_xlwings_code.py or run inline:

import zipfile
import xml.etree.ElementTree as ET
import json
import sys
import os

def extract_xlwings_code(xlsx_path, output_dir=None):
    """Extract main.py and requirements.txt from an xlwings Lite Excel file."""
    if output_dir is None:
        output_dir = os.path.dirname(xlsx_path)

    with zipfile.ZipFile(xlsx_path, 'r') as z:
        with z.open('xl/webextensions/webextension1.xml') as f:
            tree = ET.parse(f)

    root = tree.getroot()
    ns = {'we': 'http://schemas.microsoft.com/office/webextensions/webextension/2010/11'}

    for prop in root.findall('.//we:property', ns):
        name = prop.get('name')
        value = prop.get('value', '')

        if name == 'main.py':
            code = json.loads(value)
            out_path = os.path.join(output_dir, 'extracted_main.py')
            with open(out_path, 'w', encoding='utf-8') as out:
                out.write(code)
            lines = code.count('\n') + 1
            print(f'main.py: {lines} lines, {len(code)} chars -> {out_path}')

        elif name == 'requirements.txt':
            req = json.loads(value)
            out_path = os.path.join(output_dir, 'extracted_requirements.txt')
            with open(out_path, 'w', encoding='utf-8') as out:
                out.write(req)
            print(f'requirements.txt -> {out_path}')
            print(f'  Packages: {req}')

        elif name in ('pyodideVersion', 'addinVersion'):
            print(f'{name}: {json.loads(value)}')

if __name__ == '__main__':
    if len(sys.argv) < 2:
        print('Usage: py extract_xlwings_code.py <path_to_xlsx> [output_dir]')
        sys.exit(1)
    xlsx = sys.argv[1]
    out = sys.argv[2] if len(sys.argv) > 2 else None
    extract_xlwings_code(xlsx, out)

Quick one-liner

From the command line:

py -c "
import zipfile, xml.etree.ElementTree as ET, json, sys
z=zipfile.ZipFile(sys.argv[1]); t=ET.parse(z.open('xl/webextensions/webextension1.xml'))
ns={'we':'http://schemas.microsoft.com/office/webextensions/webextension/2010/11'}
[print(json.loads(p.get('value',''))) for p in t.getroot().findall('.//we:property',ns) if p.get('name')=='main.py']
" "C:\path\to\file.xlsx"

Example usage

Full extraction:

py extract_xlwings_code.py "C:\path\to\your\xlwings_lite_file.xlsx"

Extract to specific directory:

py extract_xlwings_code.py "C:\path\to\file.xlsx" "C:\output\dir"

Notes

xlwings Lite official site: lite.xlwings.org