# mini-software/miniexcel architecture

> Architecture diagram of the GitHub repository mini-software/miniexcel, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/mini-software/miniexcel
- Repository: https://github.com/mini-software/miniexcel

## Overview

MiniExcel is a .NET library for streaming Excel and CSV processing. Its main workflow routes an API query to a format-specific importer and row reader, then maps rows to typed or dynamic results; export follows the corresponding API-to-exporter path. The source index supports the key importer, reader, mapper, writer, and mapping components. The graph also preserves documented template support and the visible fluent-mapping and editing subsystems; unsampled implementation details are represented conservatively.

Main entry points: [`src/MiniExcel/MiniExcel.cs`](https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel/MiniExcel.cs) (MiniExcel API), [`src/MiniExcel.OpenXml/Reader/OpenXmlReader.cs`](https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.OpenXml/Reader/OpenXmlReader.cs) (OpenXML Reader), [`src/MiniExcel.Core/Reflection/MiniExcelMapper.cs`](https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.Core/Reflection/MiniExcelMapper.cs) (Object Mapper), [`src/MiniExcel.Core/Reflection/MiniExcelColumnMapping.cs`](https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.Core/Reflection/MiniExcelColumnMapping.cs) (Column Mapping)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["Public API"]
  node_facade["MiniExcel API<br/>[MiniExcel.cs]"]
  node_attributes["Column Attributes"]
end

subgraph group_formats["File Formats"]
  node_xlsx_import["XLSX Importer<br/>[OpenXmlImporter.cs]"]
  node_xlsx_reader["OpenXML Reader<br/>[OpenXmlReader.cs]"]
  node_csv_import["CSV Importer<br/>[CsvImporter.cs]"]
  node_csv_reader["CSV Reader<br/>[CsvReader.cs]"]
  node_xlsx_export["XLSX Exporter<br/>[OpenXmlExporter.cs]"]
  node_csv_export["CSV Exporter<br/>[CsvExporter.cs]"]
  node_csv_writer["CSV Writer<br/>[CsvWriter.cs]"]
end

subgraph group_mapping["Mapping"]
  node_mapper["Object Mapper<br/>[MiniExcelMapper.cs]"]
  node_column_map["Column Mapping"]
  node_fluent_config["Fluent Configuration"]
  node_mapping_compiler["Mapping Compiler<br/>[MappingCompiler.cs]"]
  node_mapping_reader["Mapped Reader<br/>[MappingReader.cs]"]
  node_mapping_registry["Mapping Registry<br/>[MappingRegistry.cs]"]
end

subgraph group_extensions["Excel Extensions"]
  node_template["Template Filling"]
  node_editor["Workbook Editor"]
  node_style_context["Style Builder"]
  node_converter["Format Converter"]
end

node_user(("Application"))

node_user -->|"calls"| node_facade
node_facade -->|"routes XLSX"| node_xlsx_import
node_facade -->|"routes CSV"| node_csv_import
node_facade -->|"routes XLSX"| node_xlsx_export
node_facade -->|"routes CSV"| node_csv_export
node_xlsx_import -->|"creates reader"| node_xlsx_reader
node_csv_import -->|"creates reader"| node_csv_reader
node_xlsx_reader -->|"maps rows"| node_mapper
node_csv_reader -->|"maps rows"| node_mapper
node_mapper -->|"uses mappings"| node_column_map
node_csv_export -->|"writes CSV"| node_csv_writer
node_csv_writer -->|"uses mappings"| node_column_map
node_fluent_config -->|"compiles mappings"| node_mapping_compiler
node_mapping_compiler -->|"registers mapping"| node_mapping_registry
node_mapping_reader -->|"uses registry"| node_mapping_registry
node_facade -->|"fills templates"| node_template
node_facade -->|"converts formats"| node_converter
node_editor -->|"uses styles"| node_style_context
node_attributes -->|"provides metadata"| node_column_map
node_mapping_reader -.->|"reads workbook"| node_xlsx_reader

click node_facade "https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel/MiniExcel.cs"
click node_attributes "https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.Core/Attributes/MiniExcelColumnAttribute.cs"
click node_xlsx_import "https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.OpenXml/Api/OpenXmlImporter.cs"
click node_xlsx_reader "https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.OpenXml/Reader/OpenXmlReader.cs"
click node_csv_import "https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.Csv/Api/CsvImporter.cs"
click node_csv_reader "https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.Csv/CsvReader.cs"
click node_xlsx_export "https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.OpenXml/Api/OpenXmlExporter.cs"
click node_csv_export "https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.Csv/Api/CsvExporter.cs"
click node_csv_writer "https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.Csv/CsvWriter.cs"
click node_mapper "https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.Core/Reflection/MiniExcelMapper.cs"
click node_column_map "https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.Core/Reflection/MiniExcelColumnMapping.cs"
click node_fluent_config "https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.OpenXml.FluentMapping/Configuration/MappingConfiguration.cs"
click node_mapping_compiler "https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.OpenXml.FluentMapping/MappingCompiler.cs"
click node_mapping_reader "https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.OpenXml.FluentMapping/MappingReader.cs"
click node_mapping_registry "https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.OpenXml.FluentMapping/MappingRegistry.cs"
click node_template "https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.OpenXml/Templates/OpenXmlTemplate.Impl.cs"
click node_editor "https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.OpenXml/Editor/OpenXmlEditingPipeline.cs"
click node_style_context "https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.OpenXml/Styles/Builder/SheetStyleBuildContext.cs"
click node_converter "https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel/MiniExcelConverter.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_facade,node_attributes toneBlue
class node_xlsx_import,node_xlsx_reader,node_csv_import,node_csv_reader,node_xlsx_export,node_csv_export,node_csv_writer toneAmber
class node_mapper,node_column_map,node_fluent_config,node_mapping_compiler,node_mapping_reader,node_mapping_registry toneMint
class node_template,node_editor,node_style_context,node_converter toneRose
class node_user toneIndigo
```

## Components

### Public API

- [MiniExcel API](https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel/MiniExcel.cs): `src/MiniExcel/MiniExcel.cs`
- [Column Attributes](https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.Core/Attributes/MiniExcelColumnAttribute.cs): `src/MiniExcel.Core/Attributes/MiniExcelColumnAttribute.cs`

### File Formats

- [XLSX Importer](https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.OpenXml/Api/OpenXmlImporter.cs): `src/MiniExcel.OpenXml/Api/OpenXmlImporter.cs`
- [OpenXML Reader](https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.OpenXml/Reader/OpenXmlReader.cs): `src/MiniExcel.OpenXml/Reader/OpenXmlReader.cs`
- [CSV Importer](https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.Csv/Api/CsvImporter.cs): `src/MiniExcel.Csv/Api/CsvImporter.cs`
- [CSV Reader](https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.Csv/CsvReader.cs): `src/MiniExcel.Csv/CsvReader.cs`
- [XLSX Exporter](https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.OpenXml/Api/OpenXmlExporter.cs): `src/MiniExcel.OpenXml/Api/OpenXmlExporter.cs`
- [CSV Exporter](https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.Csv/Api/CsvExporter.cs): `src/MiniExcel.Csv/Api/CsvExporter.cs`
- [CSV Writer](https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.Csv/CsvWriter.cs): `src/MiniExcel.Csv/CsvWriter.cs`

### Mapping

- [Object Mapper](https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.Core/Reflection/MiniExcelMapper.cs): `src/MiniExcel.Core/Reflection/MiniExcelMapper.cs`
- [Column Mapping](https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.Core/Reflection/MiniExcelColumnMapping.cs): `src/MiniExcel.Core/Reflection/MiniExcelColumnMapping.cs`
- [Fluent Configuration](https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.OpenXml.FluentMapping/Configuration/MappingConfiguration.cs): `src/MiniExcel.OpenXml.FluentMapping/Configuration/MappingConfiguration.cs`
- [Mapping Compiler](https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.OpenXml.FluentMapping/MappingCompiler.cs): `src/MiniExcel.OpenXml.FluentMapping/MappingCompiler.cs`
- [Mapped Reader](https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.OpenXml.FluentMapping/MappingReader.cs): `src/MiniExcel.OpenXml.FluentMapping/MappingReader.cs`
- [Mapping Registry](https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.OpenXml.FluentMapping/MappingRegistry.cs): `src/MiniExcel.OpenXml.FluentMapping/MappingRegistry.cs`

### Excel Extensions

- [Template Filling](https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.OpenXml/Templates/OpenXmlTemplate.Impl.cs): `src/MiniExcel.OpenXml/Templates/OpenXmlTemplate.Impl.cs`
- [Workbook Editor](https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.OpenXml/Editor/OpenXmlEditingPipeline.cs): `src/MiniExcel.OpenXml/Editor/OpenXmlEditingPipeline.cs`
- [Style Builder](https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel.OpenXml/Styles/Builder/SheetStyleBuildContext.cs): `src/MiniExcel.OpenXml/Styles/Builder/SheetStyleBuildContext.cs`
- [Format Converter](https://github.com/mini-software/miniexcel/blob/master/src/MiniExcel/MiniExcelConverter.cs): `src/MiniExcel/MiniExcelConverter.cs`

### Other components

- **Application**

## Connections

- Application → MiniExcel API: calls (evidence: `README.md`)
- MiniExcel API → XLSX Importer: routes XLSX (evidence: `src/MiniExcel/MiniExcel.cs`)
- MiniExcel API → CSV Importer: routes CSV (evidence: `src/MiniExcel/MiniExcel.cs`)
- MiniExcel API → XLSX Exporter: routes XLSX (evidence: `src/MiniExcel/MiniExcel.cs`)
- MiniExcel API → CSV Exporter: routes CSV (evidence: `src/MiniExcel/MiniExcel.cs`)
- XLSX Importer → OpenXML Reader: creates reader (evidence: `src/MiniExcel.OpenXml/Api/OpenXmlImporter.cs`)
- CSV Importer → CSV Reader: creates reader (evidence: `src/MiniExcel.Csv/Api/CsvImporter.cs`)
- OpenXML Reader → Object Mapper: maps rows (evidence: `src/MiniExcel.OpenXml/Reader/OpenXmlReader.cs`)
- CSV Reader → Object Mapper: maps rows (evidence: `src/MiniExcel.Csv/CsvReader.cs`)
- Object Mapper → Column Mapping: uses mappings (evidence: `src/MiniExcel.Core/Reflection/MiniExcelMapper.cs`)
- CSV Exporter → CSV Writer: writes CSV (evidence: `src/MiniExcel.Csv/Api/CsvExporter.cs`)
- CSV Writer → Column Mapping: uses mappings (evidence: `src/MiniExcel.Csv/CsvWriter.cs`)
- Fluent Configuration → Mapping Compiler: compiles mappings (evidence: `src/MiniExcel.OpenXml.FluentMapping/MappingCompiler.cs`)
- Mapping Compiler → Mapping Registry: registers mapping (evidence: `src/MiniExcel.OpenXml.FluentMapping/MappingCompiler.cs`)
- Mapped Reader → Mapping Registry: uses registry (evidence: `src/MiniExcel.OpenXml.FluentMapping/MappingReader.cs`)
- MiniExcel API → Template Filling: fills templates (evidence: `src/MiniExcel/MiniExcel.cs`)
- MiniExcel API → Format Converter: converts formats (evidence: `src/MiniExcel/MiniExcel.cs`)
- Workbook Editor → Style Builder: uses styles (evidence: `src/MiniExcel.OpenXml/Editor/OpenXmlEditingPipeline.cs`)
- Column Attributes → Column Mapping: provides metadata (evidence: `src/MiniExcel.Core/Reflection/MiniExcelColumnMapping.cs`)
- Mapped Reader → OpenXML Reader: reads workbook
