"""Read an existing .xlsx and print a small summary.

If --input is not provided, this script creates a tiny sample workbook in /tmp
and reads that instead.
"""

from __future__ import annotations

import argparse
import tempfile
from pathlib import Path

from openpyxl import Workbook, load_workbook


def create_sample(path: Path) -> Path:
    wb = Workbook()
    ws = wb.active
    ws.title = "Sample"
    ws.append(["Item", "Qty", "Price"])
    ws.append(["Apples", 3, 1.25])
    ws.append(["Oranges", 2, 0.95])
    ws.append(["Bananas", 5, 0.75])
    ws["D1"] = "Total"
    ws["D2"] = "=B2*C2"
    ws["D3"] = "=B3*C3"
    ws["D4"] = "=B4*C4"
    wb.save(path)
    return path


def main() -> None:
    parser = argparse.ArgumentParser(description="Read an existing spreadsheet.")
    parser.add_argument("--input", type=Path, help="Path to an .xlsx file")
    args = parser.parse_args()

    if args.input:
        input_path = args.input
    else:
        tmp_dir = Path(tempfile.gettempdir())
        input_path = tmp_dir / "sample_read_existing.xlsx"
        create_sample(input_path)

    wb = load_workbook(input_path, data_only=False)
    print(f"Loaded: {input_path}")
    print("Sheet names:", wb.sheetnames)

    for name in wb.sheetnames:
        ws = wb[name]
        max_row = ws.max_row or 0
        max_col = ws.max_column or 0
        print(f"\n== {name} (rows: {max_row}, cols: {max_col})")
        for row in ws.iter_rows(min_row=1, max_row=min(max_row, 5), max_col=min(max_col, 5)):
            values = [cell.value for cell in row]
            print(values)


if __name__ == "__main__":
    main()
