omnidoc-excel-extractor — Full Extraction Report
File    : /private/tmp/my_test.xlsx
Created : 2026-05-16T13:04:37.261616
Chunks  : 96


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  ◈  STRUCTURAL LAYER
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  ┌─ #1.  WORKBOOK METADATA  (1 chunks)
    Name          : my_test
    Path          : /private/tmp/my_test.xlsx
    Sheets        : Sales, Summary
    Author        : openpyxl
    Created       : 2026-05-16 07:26:13
    Modified      : 2026-05-16 07:26:13
    File size     : 7.49 KB
    App version   : —
    Has macros    : False
    Shared        : False

  ┌─ #2.  SHEETS  (2 chunks)
    [0] 'Sales'                      type=worksheet    visible=True  range=A1:K6  protected=False  zoom=—%
    [1] 'Summary'                    type=worksheet    visible=True  range=A1:B2  protected=False  zoom=—%

  ┌─ #3.  EXCEL TABLES  (1 chunks)
    'SalesData'                    @ A1:F6           sheet='Sales'  5 rows × 6 cols  style=TableStyleMedium9

  ┌─ #4.  COLUMN SCHEMA  (2 chunks)

    Sheet: 'Sales'  (inferred PK: Date)
    Column                         Type       Null%   Unique%  Sample
    ────────────────────────────── ────────── ─────── ──────── ────────────────────
    Date                           date         0.0%  100.0%  2024-01-01 00:00:00, 2024-02-01 00:00:00, 2024-03-01 00:00:00
    Product                        text         0.0%   60.0%  Widget A, Widget B, Widget A
    Region                         text         0.0%   80.0%  North, South, East
    Revenue                        numeric      0.0%  100.0%  10000, 15000, 12000
    Units                          numeric      0.0%  100.0%  100, 150, 120
    Cost                           numeric      0.0%  100.0%  6000, 9000, 7200
    col_6                          text       100.0%    0.0%  
    Total Revenue                  text        60.0%  100.0%  =SUM(D2:D6), =AVERAGE(D2:D6)
    col_8                          text       100.0%    0.0%  
    Merged Header                  text       100.0%    0.0%  
    col_10                         text       100.0%    0.0%  

    Sheet: 'Summary'  (inferred PK: Total Revenue)
    Column                         Type       Null%   Unique%  Sample
    ────────────────────────────── ────────── ─────── ──────── ────────────────────
    Total Revenue                  text         0.0%  100.0%  Avg Units
    63000                          numeric      0.0%  100.0%  126

  ┌─ #5.  ROW DATA  (8 chunks)
    Sheet 'Sales': 7 RowChunks  (rows 2–6)
      row 2: {'Date': '2024-01-01 00:00:00', 'Product': 'Widget A', 'Region': 'North', 'Revenue': '10000', 'Units': '100'}
      row 3: {'Date': '2024-02-01 00:00:00', 'Product': 'Widget B', 'Region': 'South', 'Revenue': '15000', 'Units': '150'}
      ... 5 more rows
    Sheet 'Summary': 1 RowChunks  (rows 2–2)
      row 2: {'Total Revenue': 'Avg Units', '63000': '126'}

  ┌─ #6.  ROW / COLUMN GROUPS  (0 chunks — none in this file)
    — not present in this file —

  ┌─ #7.  PARENT CONTEXT (BREADCRUMBS)  (2 chunks)
    workbook='openpyxl'  sheet='Sales'  table=—  group_path=[]
    workbook='openpyxl'  sheet='Summary'  table=—  group_path=[]

  ┌─ #8.  MERGED CELLS  (1 chunks)
    J1:K2         value=Merged Header                    span=2r×2c  sheet='Sales'

  ┌─ #9.  FROZEN PANES  (0 chunks — none in this file)
    — not present in this file —

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  ◈  SEMANTIC LAYER
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  ┌─ #10. SHEET / TABLE SUMMARY  (2 chunks)
    'Sales'                      rows=     5  cols=  11  null=41.8%  dupe=9.4%
                                 numeric=['Revenue', 'Units', 'Cost']  date=['Date']  text=['Product', 'Region', 'col_6', 'Total Revenue', 'col_8']
    'Summary'                    rows=     1  cols=   2  null=0.0%  dupe=0.0%
                                 numeric=['63000']  date=[]  text=['Total Revenue']

  ┌─ #11. SEMANTIC NARRATIVES  (2 chunks)
    [sheet] 'Sales'  confidence=80%
      Sheet 'Sales' contains 5 data rows across 11 columns: Date,
      Product, Region, Revenue, Units, Cost, col_6, Total Revenue
      and 3 more.
    [sheet] 'Summary'  confidence=80%
      Sheet 'Summary' contains 1 data rows across 2 columns: Total
      Revenue, 63000.

  ┌─ #12. COLUMN SEMANTIC ROLES  (13 chunks)

    Sheet 'Sales':
      Column                         Role         Unit   Currency PK   FK
      ────────────────────────────── ──────────── ────── ──────── ──── ────
      Date                           date         —      —             
      Product                        dimension    —      —             
      Region                         dimension    —      —             
      Revenue                        measure      —      —             
      Units                          measure      —      —             
      Cost                           measure      —      —             
      col_6                          dimension    —      —             
      Total Revenue                  dimension    —      —             
      col_8                          dimension    —      —             
      Merged Header                  dimension    —      —             
      col_10                         dimension    —      —             

    Sheet 'Summary':
      Column                         Role         Unit   Currency PK   FK
      ────────────────────────────── ──────────── ────── ──────── ──── ────
      Total Revenue                  dimension    —      —             
      63000                          measure      —      —             

  ┌─ #13. HEADER ALIASES  (13 chunks)
    'Date'                         → norm='date'                    aliases=[]  abbrev=[]
    'Product'                      → norm='product'                 aliases=[]  abbrev=['pro']
    'Region'                       → norm='region'                  aliases=[]  abbrev=['reg']
    'Revenue'                      → norm='revenue'                 aliases=[]  abbrev=['rev']
    'Units'                        → norm='units'                   aliases=[]  abbrev=['uni']
    'Cost'                         → norm='cost'                    aliases=[]  abbrev=[]
    'col_6'                        → norm='col_6'                   aliases=['C6', 'Col6']  abbrev=['c6']
    'Total Revenue'                → norm='total_revenue'           aliases=['TR', 'TotalRevenue']  abbrev=['rev', 'tot']
    'col_8'                        → norm='col_8'                   aliases=['C8', 'Col8']  abbrev=['c8']
    'Merged Header'                → norm='merged_header'           aliases=['MH', 'MergedHeader']  abbrev=['hea', 'mer']
    'col_10'                       → norm='col_10'                  aliases=['C1', 'Col10']  abbrev=['c1']
    'Total Revenue'                → norm='total_revenue'           aliases=['TR', 'TotalRevenue']  abbrev=['rev', 'tot']
    '63000'                        → norm='63000'                   aliases=[]  abbrev=['630']

  ┌─ #14. NAMED ENTITIES  (1 chunks)
    PERSON:
      'Avg Units'                              freq=1  cols=['Total Revenue']

  ┌─ #15. CELL COMMENTS / ANNOTATIONS  (0 chunks — none in this file)
    — not present in this file —

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  ◈  ANALYTICAL LAYER
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  ┌─ #16. FORMULA DEFINITIONS  (2 chunks)
    Total: 2  by type: {'scalar': 2}
    Sheet           Cell     Type     Formula
    ─────────────── ──────── ──────── ────────────────────────────────────────
    Sales           H2       scalar   =SUM(D2:D6)
    Sales           H3       scalar   =AVERAGE(D2:D6)

  ┌─ #17. FORMULA RESULTS  (2 chunks)
    Total formula results: 2  OK: 2  Errors: 0
    ✓ Sales!H2  value==SUM(D2:D6)  type=str
    ✓ Sales!H3  value==AVERAGE(D2:D6)  type=str

  ┌─ #18. KPIs  (1 chunks)
    KPI Name                            Value           Target       Variance   Cell
    ─────────────────────────────────── ─────────────── ──────────── ────────── ────────
    Total Revenue                       63000           —            —          B1

  ┌─ #19. AGGREGATIONS  (20 chunks)
    Sheet·Column                             SUM             AVG          MIN        MAX        COUNT
    ──────────────────────────────────────── ─────────────── ──────────── ────────── ────────── ───────
    Sales·Revenue                            63000.0         12600.0      8000.0     18000.0    5
    Sales·Units                              630.0           126.0        80.0       180.0      5
    Sales·Cost                               37800.0         7560.0       4800.0     10800.0    5
    Summary·63000                            126.0           126.0        126.0      126.0      1

  ┌─ #20. TEMPORAL / TIME-SERIES  (1 chunks)
    'Sales'·'Date'                    freq=monthly    2024-01-01 00:00:00 → 2024-05-01 00:00:00  gaps=0  sorted=True

  ┌─ #21. TRENDS  (3 chunks)
    'Sales'·'Revenue'                   ↑ delta=8000.0      (80.0%)  slope=900.0
    'Sales'·'Units'                     ↑ delta=80.0        (80.0%)  slope=9.0
    'Sales'·'Cost'                      ↑ delta=4800.0      (80.0%)  slope=540.0

  ┌─ #22. OUTLIERS  (0 chunks — none in this file)
    — not present in this file —

  ┌─ #23. LOOKUP MAPS  (0 chunks — none in this file)
    — not present in this file —

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  ◈  VALIDATION LAYER
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  ┌─ #24. DATA VALIDATIONS  (0 chunks — none in this file)
    — not present in this file —

  ┌─ #25. EXCEL ERRORS  (0 chunks — none in this file)
    — not present in this file —

  ┌─ #26. CONDITIONAL FORMATS  (0 chunks — none in this file)
    — not present in this file —

  ┌─ #27. PROTECTION SETTINGS  (0 chunks — none in this file)
    — not present in this file —

  ┌─ #28. DATA QUALITY  (13 chunks)
    Sheet·Column                             Blanks  Dupes   TypeErr OutRange
    ──────────────────────────────────────── ─────── ─────── ─────── ────────
    Sales·Product                                        0       2       0        0
    Sales·Region                                         0       1       0        0
    Sales·col_6                                          5       5       0        0
    Sales·Total Revenue                                  3       3       0        0
    Sales·col_8                                          5       5       0        0
    Sales·Merged Header                                  5       5       0        0
    Sales·col_10                                         5       5       0        0
    6 columns fully clean, 7 columns flagged.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  ◈  VISUAL LAYER
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  ┌─ #29. CHARTS  (1 chunks)
    'bar_0'                        type=bar          sheet='Sales'  anchor=08  series=1

  ┌─ #30. CHART SERIES  (1 chunks)
    series=<openpyxl.chart.series.SeriesLabel object>
Parameters:
strRef=<openpyxl.chart.data_source.StrRef object>
Parameters:
f="'Sales'!D1", strCache=None, v=None range='Sales'!$D$2:$D$6    trendline=—

  ┌─ #31. CHART ANNOTATIONS  (0 chunks — none in this file)
    — not present in this file —

  ┌─ #32. PIVOT TABLES  (0 chunks — none in this file)
    — not present in this file —

  ┌─ #33. PIVOT FIELDS  (0 chunks — none in this file)
    — not present in this file —

  ┌─ #34. PIVOT CACHE  (0 chunks — none in this file)
    — not present in this file —

  ┌─ #35. SLICERS  (0 chunks — none in this file)
    — not present in this file —

  ┌─ #36. TIMELINE SLICERS  (0 chunks — none in this file)
    — not present in this file —

  ┌─ #37. SPARKLINES  (0 chunks — none in this file)
    — not present in this file —

  ┌─ #38. SHAPES  (0 chunks — none in this file)
    — not present in this file —

  ┌─ #39. IMAGES  (0 chunks — none in this file)
    — not present in this file —

  ┌─ #40. FORM CONTROLS  (0 chunks — none in this file)
    — not present in this file —

  ┌─ #41. ACTIVEX CONTROLS  (0 chunks — none in this file)
    — not present in this file —

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  ◈  VBA LAYER
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  ┌─ #42. MACROS  (0 chunks — none in this file)
    — not present in this file —

  ┌─ #43. VBA MODULES  (0 chunks — none in this file)
    — not present in this file —

  ┌─ #44. VBA EVENTS  (0 chunks — none in this file)
    — not present in this file —

  ┌─ #45. CUSTOM FUNCTIONS (UDFs)  (0 chunks — none in this file)
    — not present in this file —

  ┌─ #46. RIBBON CUSTOMISATION  (0 chunks — none in this file)
    — not present in this file —

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  ◈  CROSS_REF LAYER
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  ┌─ #47. CROSS-SHEET RELATIONSHIPS  (0 chunks — none in this file)
    — not present in this file —

  ┌─ #48. NAMED RANGES  (0 chunks — none in this file)
    — not present in this file —

  ┌─ #49. EXTERNAL LINKS  (0 chunks — none in this file)
    — not present in this file —

  ┌─ #50. DEPENDENCY GRAPH  (2 chunks)
    Sheet 'Sales': 2 nodes  0 edges  max_depth=0  circular=False
    Sheet 'Summary': 0 nodes  0 edges  max_depth=0  circular=False

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  ◈  CONNECTIVITY LAYER
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  ┌─ #51. POWER QUERY  (0 chunks — none in this file)
    — not present in this file —

  ┌─ #52. DATA MODEL (POWERPIVOT)  (0 chunks — none in this file)
    — not present in this file —

  ┌─ #53. DAX MEASURES  (0 chunks — none in this file)
    — not present in this file —

  ┌─ #54. DATA CONNECTIONS  (0 chunks — none in this file)
    — not present in this file —

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  ◈  OPERATIONAL LAYER
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  ┌─ #55. PRINT SETTINGS  (2 chunks)
    'Sales'                   area=—               orientation=—  header=—
    'Summary'                 area=—               orientation=—  header=—

  ┌─ #56. CHANGE LOG  (0 chunks — none in this file)
    — not present in this file —

  ┌─ #57. CHUNK INDEX  (master manifest)