English | Português | Español | Français | Deutsch
Utility component for converting Excel files to JSON, DataTable, dynamic Objects and C# Models (automatically generated via NJsonSchema).
It supports two main reading modes:
- Tabular Sheet (table-format spreadsheets)
- Form Sheet (form-structured spreadsheets)
Table-format spreadsheets (rows x columns)
JSON as string
var parser = new ExcelToJsonParser();
string json = parser.GetJsonStringFromTabular("arquivo.xlsx");JSON as objects (IEnumerable)
var parser = new ExcelToJsonParser();
var objList = parser.GetJsonObjectFromTabular("arquivo.xlsx");
foreach(var obj in objList)
{
...
}DataTable (with or without header)
DataTable data = parser.GetDataTable("arquivo.xlsx", skipRows: 1, useHeader: true);C# classes from column names
string classFile = parser.GetClassModelFromTabular("arquivo.xlsx");Form-structured spreadsheets (e.g.: "Field: Value").
JSON as string
string json = parser.GetJsonStringFromForm("arquivo.xlsx", "FichaCliente");JSON as object
var obj = parser.GetJsonObjectFromForm("arquivo.xlsx", "FichaCliente");Dictionary<string, object>
var dict = parser.GetDictionary("arquivo.xlsx", "FichaCliente");C# class
string classModel = parser.GetClassModelFromForm("arquivo.xlsx", "FichaCliente");skipRows: Skips leading rows.
replaceFrom / replaceTo: Replaces parts of column names.
headerColumns: Manually provides the Excel header.
onlySampleRow: When true, reads only 1 row. Used internally for C# model generation.
Read a tabular spreadsheet skipping 2 rows and normalizing headers
var parser = new ExcelToJsonParser();
string json = parser.GetJsonStringFromTabular(
"produtos.xlsx",
skipRows: 2,
replaceFrom: new[] { " ", "-" },
replaceTo: new[] { "_", "" }
);
Console.WriteLine(json);Typical Tabular mode example:
[
{
"Nome": "Ana",
"Idade": 30,
"Ativo": true
},
{
"Nome": "João",
"Idade": 22,
"Ativo": false
}
]Form Mode:
{
"Nome": "Carlos",
"CPF": "111.222.333-44",
"Telefone": "(11) 99999-0000"
}Row-by-row async processing for large data volumes.
using var parser = new ExcelToJsonParser();
using var stream = File.OpenRead("grande.xlsx");
await foreach (var row in parser.StreamFromTabular(stream))
{
Console.WriteLine(row["Nome"]);
}Per-column validation rules before processing.
var rules = new[]
{
new ValidationRule { ColumnName = "Email", Type = "required", Message = "Email obrigatório" },
new ValidationRule { ColumnName = "Idade", Type = "numeric" },
new ValidationRule { ColumnName = "UF", Type = "in_list", AllowedValues = new[] { "SP", "RJ" } },
new ValidationRule { ColumnName = "CPF", Type = "regex", Pattern = @"^\d{3}\.\d{3}\.\d{3}-\d{2}$" }
};
var result = parser.ValidateTabular(stream, rules);
if (!result.IsValid)
result.Errors.ForEach(e => Console.WriteLine(e.Message));Available types: required, max_length, min_length, numeric, date, in_list, regex.
Apply transformations to the read values.
var transforms = new[]
{
new TransformConfig { Type = "trim" },
new TransformConfig { Type = "upper_case" },
new TransformConfig { Type = "replace", Params = new() { { "from", " " }, { "to", "_" } } }
};
var clean = parser.ApplyTransforms(" joao silva ", transforms); // "JOAO_SILVA"Available types: trim, upper_case, lower_case, title_case, replace, to_decimal, to_int, to_date, to_boolean, default, split, map_values.
Read all sheets at once.
var allSheets = parser.GetJsonStringsFromAllSheets("multi.xlsx");
foreach (var kvp in allSheets)
Console.WriteLine($"{kvp.Key}: {kvp.Value}");var data = new List<IDictionary<string, object>>
{
new Dictionary<string, object> { { "Nome", "João" }, { "Idade", 30 } }
};
byte[] excelBytes = parser.TabularToExcel(data, "Pessoas");
File.WriteAllBytes("saida.xlsx", excelBytes);using var csvStream = File.OpenRead("dados.csv");
byte[] excelBytes = parser.CsvToExcel(csvStream, delimiter: ",");
File.WriteAllBytes("saida.xlsx", excelBytes);var json = @"[{""Nome"":""João"",""Idade"":30},{""Nome"":""Maria"",""Idade"":25}]";
byte[] excelBytes = parser.JsonToExcel(json, "Pessoas");
File.WriteAllBytes("saida.xlsx", excelBytes);byte[] csvBytes = parser.JsonToCsv(json, delimiter: ";");
File.WriteAllBytes("saida.csv", csvBytes);using Stream csvStream = parser.JsonToCsvStream(json);var xml = @"<Pessoas><Pessoa><Nome>João</Nome><Idade>30</Idade></Pessoa></Pessoas>";
byte[] excelBytes = parser.XmlToExcel(xml, "Pessoas");
File.WriteAllBytes("saida.xlsx", excelBytes);byte[] csvBytes = parser.XmlToCsv(xml);ExcelToJsonParser implements IDisposable. Use using to ensure proper resource disposal.
using var parser = new ExcelToJsonParser();
// ... usage- ExcelDataReader 3.9.0 — .xls/.xlsx/.xlsb reading
- ClosedXML 0.102.3 — .xlsx writing
- System.Text.Json 8.0.5 — JSON serialization
- NJsonSchema 10.1.16 — C# class generation
dotnet test Rochas.ExcelToJsonParser.Tests/140 tests covering: Tabular, Form, Streaming, Multi-sheet, Validation, Transform, Export, Reverse Flow, Error Handling.
- .NET Standard 2.1 / .NET 6+ / .NET 8+ / .NET 9
- NuGet:
dotnet add package Rochas.ExcelToJsonParser
Componente utilitário para conversão de arquivos Excel em JSON, DataTable, Objetos dinâmicos e Modelos C# (gerados automaticamente via NJsonSchema).
Ele suporta dois modos principais de leitura:
- Tabular Sheet (planilhas em formato de tabela)
- Form Sheet (planilhas estruturadas como formulários)
Planilhas no formato tabela (linhas x colunas)
JSON como string
var parser = new ExcelToJsonParser();
string json = parser.GetJsonStringFromTabular("arquivo.xlsx");JSON como objetos (IEnumerable)
var parser = new ExcelToJsonParser();
var objList = parser.GetJsonObjectFromTabular("arquivo.xlsx");
foreach(var obj in objList)
{
...
}DataTable (com ou sem cabeçalho)
DataTable data = parser.GetDataTable("arquivo.xlsx", skipRows: 1, useHeader: true);Classes C# a partir dos nomes das colunas
string classFile = parser.GetClassModelFromTabular("arquivo.xlsx");Planilhas estruturadas como formulário (ex.: "Campo: Valor").
JSON como string
string json = parser.GetJsonStringFromForm("arquivo.xlsx", "FichaCliente");JSON como objeto
var obj = parser.GetJsonObjectFromForm("arquivo.xlsx", "FichaCliente");Dictionary<string, object>
var dict = parser.GetDictionary("arquivo.xlsx", "FichaCliente");Classe C#
string classModel = parser.GetClassModelFromForm("arquivo.xlsx", "FichaCliente");skipRows: Ignora linhas iniciais.
replaceFrom / replaceTo: Permite substituir partes do nome das colunas.
headerColumns: Permite informar manualmente o cabeçalho do Excel.
onlySampleRow: Quando true, lê apenas 1 linha. Usado internamente para geração de modelos C#.
Ler planilha tabular ignorando 2 linhas e normalizando cabeçalhos
var parser = new ExcelToJsonParser();
string json = parser.GetJsonStringFromTabular(
"produtos.xlsx",
skipRows: 2,
replaceFrom: new[] { " ", "-" },
replaceTo: new[] { "_", "" }
);
Console.WriteLine(json);Exemplo típico do modo Tabular:
[
{
"Nome": "Ana",
"Idade": 30,
"Ativo": true
},
{
"Nome": "João",
"Idade": 22,
"Ativo": false
}
]Modo Form:
{
"Nome": "Carlos",
"CPF": "111.222.333-44",
"Telefone": "(11) 99999-0000"
}Processamento assíncrono linha a linha para grandes volumes de dados.
using var parser = new ExcelToJsonParser();
using var stream = File.OpenRead("grande.xlsx");
await foreach (var row in parser.StreamFromTabular(stream))
{
Console.WriteLine(row["Nome"]);
}Regras de validação por coluna antes de processar.
var rules = new[]
{
new ValidationRule { ColumnName = "Email", Type = "required", Message = "Email obrigatório" },
new ValidationRule { ColumnName = "Idade", Type = "numeric" },
new ValidationRule { ColumnName = "UF", Type = "in_list", AllowedValues = new[] { "SP", "RJ" } },
new ValidationRule { ColumnName = "CPF", Type = "regex", Pattern = @"^\d{3}\.\d{3}\.\d{3}-\d{2}$" }
};
var result = parser.ValidateTabular(stream, rules);
if (!result.IsValid)
result.Errors.ForEach(e => Console.WriteLine(e.Message));Tipos disponíveis: required, max_length, min_length, numeric, date, in_list, regex.
Aplicar transformações nos valores lidos.
var transforms = new[]
{
new TransformConfig { Type = "trim" },
new TransformConfig { Type = "upper_case" },
new TransformConfig { Type = "replace", Params = new() { { "from", " " }, { "to", "_" } } }
};
var clean = parser.ApplyTransforms(" joao silva ", transforms); // "JOAO_SILVA"Tipos disponíveis: trim, upper_case, lower_case, title_case, replace, to_decimal, to_int, to_date, to_boolean, default, split, map_values.
Ler todas as planilhas de uma vez.
var allSheets = parser.GetJsonStringsFromAllSheets("multi.xlsx");
foreach (var kvp in allSheets)
Console.WriteLine($"{kvp.Key}: {kvp.Value}");var data = new List<IDictionary<string, object>>
{
new Dictionary<string, object> { { "Nome", "João" }, { "Idade", 30 } }
};
byte[] excelBytes = parser.TabularToExcel(data, "Pessoas");
File.WriteAllBytes("saida.xlsx", excelBytes);using var csvStream = File.OpenRead("dados.csv");
byte[] excelBytes = parser.CsvToExcel(csvStream, delimiter: ",");
File.WriteAllBytes("saida.xlsx", excelBytes);var json = @"[{""Nome"":""João"",""Idade"":30},{""Nome"":""Maria"",""Idade"":25}]";
byte[] excelBytes = parser.JsonToExcel(json, "Pessoas");
File.WriteAllBytes("saida.xlsx", excelBytes);byte[] csvBytes = parser.JsonToCsv(json, delimiter: ";");
File.WriteAllBytes("saida.csv", csvBytes);using Stream csvStream = parser.JsonToCsvStream(json);var xml = @"<Pessoas><Pessoa><Nome>João</Nome><Idade>30</Idade></Pessoa></Pessoas>";
byte[] excelBytes = parser.XmlToExcel(xml, "Pessoas");
File.WriteAllBytes("saida.xlsx", excelBytes);byte[] csvBytes = parser.XmlToCsv(xml);O ExcelToJsonParser implementa IDisposable. Use using para garantir liberação adequada de recursos.
using var parser = new ExcelToJsonParser();
// ... uso- ExcelDataReader 3.9.0 — Leitura .xls/.xlsx/.xlsb
- ClosedXML 0.102.3 — Escrita .xlsx
- System.Text.Json 8.0.5 — Serialização JSON
- NJsonSchema 10.1.16 — Geração de classes C#
dotnet test Rochas.ExcelToJsonParser.Tests/140 testes cobrindo: Tabular, Form, Streaming, Multi-sheet, Validation, Transform, Export, Reverse Flow, Error Handling.
- .NET Standard 2.1 / .NET 6+ / .NET 8+ / .NET 9
- NuGet:
dotnet add package Rochas.ExcelToJsonParser
Componente utilitario para convertir archivos Excel a JSON, DataTable, Objetos dinámicos y Modelos C# (generados automáticamente vía NJsonSchema).
Soporta dos modos principales de lectura:
- Tabular Sheet (hojas en formato de tabla)
- Form Sheet (hojas estructuradas como formularios)
Hojas en formato tabla (filas x columnas)
JSON como string
var parser = new ExcelToJsonParser();
string json = parser.GetJsonStringFromTabular("arquivo.xlsx");JSON como objetos (IEnumerable)
var parser = new ExcelToJsonParser();
var objList = parser.GetJsonObjectFromTabular("arquivo.xlsx");
foreach(var obj in objList)
{
...
}DataTable (con o sin encabezado)
DataTable data = parser.GetDataTable("arquivo.xlsx", skipRows: 1, useHeader: true);Clases C# a partir de los nombres de las columnas
string classFile = parser.GetClassModelFromTabular("arquivo.xlsx");Hojas estructuradas como formulario (ej.: "Campo: Valor").
JSON como string
string json = parser.GetJsonStringFromForm("arquivo.xlsx", "FichaCliente");JSON como objeto
var obj = parser.GetJsonObjectFromForm("arquivo.xlsx", "FichaCliente");Dictionary<string, object>
var dict = parser.GetDictionary("arquivo.xlsx", "FichaCliente");Clase C#
string classModel = parser.GetClassModelFromForm("arquivo.xlsx", "FichaCliente");skipRows: Omite las filas iniciales.
replaceFrom / replaceTo: Permite reemplazar partes de los nombres de las columnas.
headerColumns: Permite informar manualmente el encabezado de Excel.
onlySampleRow: Cuando es true, lee solo 1 fila. Usado internamente para la generación de modelos C#.
Leer hoja tabular omitiendo 2 filas y normalizando encabezados
var parser = new ExcelToJsonParser();
string json = parser.GetJsonStringFromTabular(
"produtos.xlsx",
skipRows: 2,
replaceFrom: new[] { " ", "-" },
replaceTo: new[] { "_", "" }
);
Console.WriteLine(json);Ejemplo típico del modo Tabular:
[
{
"Nome": "Ana",
"Idade": 30,
"Ativo": true
},
{
"Nome": "João",
"Idade": 22,
"Ativo": false
}
]Modo Form:
{
"Nome": "Carlos",
"CPF": "111.222.333-44",
"Telefone": "(11) 99999-0000"
}Procesamiento asíncrono fila por fila para grandes volúmenes de datos.
using var parser = new ExcelToJsonParser();
using var stream = File.OpenRead("grande.xlsx");
await foreach (var row in parser.StreamFromTabular(stream))
{
Console.WriteLine(row["Nome"]);
}Reglas de validación por columna antes de procesar.
var rules = new[]
{
new ValidationRule { ColumnName = "Email", Type = "required", Message = "Email obrigatório" },
new ValidationRule { ColumnName = "Idade", Type = "numeric" },
new ValidationRule { ColumnName = "UF", Type = "in_list", AllowedValues = new[] { "SP", "RJ" } },
new ValidationRule { ColumnName = "CPF", Type = "regex", Pattern = @"^\d{3}\.\d{3}\.\d{3}-\d{2}$" }
};
var result = parser.ValidateTabular(stream, rules);
if (!result.IsValid)
result.Errors.ForEach(e => Console.WriteLine(e.Message));Tipos disponibles: required, max_length, min_length, numeric, date, in_list, regex.
Aplicar transformaciones a los valores leídos.
var transforms = new[]
{
new TransformConfig { Type = "trim" },
new TransformConfig { Type = "upper_case" },
new TransformConfig { Type = "replace", Params = new() { { "from", " " }, { "to", "_" } } }
};
var clean = parser.ApplyTransforms(" joao silva ", transforms); // "JOAO_SILVA"Tipos disponibles: trim, upper_case, lower_case, title_case, replace, to_decimal, to_int, to_date, to_boolean, default, split, map_values.
Leer todas las hojas de una vez.
var allSheets = parser.GetJsonStringsFromAllSheets("multi.xlsx");
foreach (var kvp in allSheets)
Console.WriteLine($"{kvp.Key}: {kvp.Value}");var data = new List<IDictionary<string, object>>
{
new Dictionary<string, object> { { "Nome", "João" }, { "Idade", 30 } }
};
byte[] excelBytes = parser.TabularToExcel(data, "Pessoas");
File.WriteAllBytes("saida.xlsx", excelBytes);using var csvStream = File.OpenRead("dados.csv");
byte[] excelBytes = parser.CsvToExcel(csvStream, delimiter: ",");
File.WriteAllBytes("saida.xlsx", excelBytes);var json = @"[{""Nome"":""João"",""Idade"":30},{""Nome"":""Maria"",""Idade"":25}]";
byte[] excelBytes = parser.JsonToExcel(json, "Pessoas");
File.WriteAllBytes("saida.xlsx", excelBytes);byte[] csvBytes = parser.JsonToCsv(json, delimiter: ";");
File.WriteAllBytes("saida.csv", csvBytes);using Stream csvStream = parser.JsonToCsvStream(json);var xml = @"<Pessoas><Pessoa><Nome>João</Nome><Idade>30</Idade></Pessoa></Pessoas>";
byte[] excelBytes = parser.XmlToExcel(xml, "Pessoas");
File.WriteAllBytes("saida.xlsx", excelBytes);byte[] csvBytes = parser.XmlToCsv(xml);ExcelToJsonParser implementa IDisposable. Use using para garantizar la liberación adecuada de recursos.
using var parser = new ExcelToJsonParser();
// ... uso- ExcelDataReader 3.9.0 — Lectura .xls/.xlsx/.xlsb
- ClosedXML 0.102.3 — Escritura .xlsx
- System.Text.Json 8.0.5 — Serialización JSON
- NJsonSchema 10.1.16 — Generación de clases C#
dotnet test Rochas.ExcelToJsonParser.Tests/140 pruebas cubriendo: Tabular, Form, Streaming, Multi-sheet, Validation, Transform, Export, Reverse Flow, Error Handling.
- .NET Standard 2.1 / .NET 6+ / .NET 8+ / .NET 9
- NuGet:
dotnet add package Rochas.ExcelToJsonParser
Composant utilitaire pour convertir des fichiers Excel en JSON, DataTable, Objets dynamiques et Modèles C# (générés automatiquement via NJsonSchema).
Il prend en charge deux modes de lecture principaux :
- Tabular Sheet (feuilles au format tableau)
- Form Sheet (feuilles structurées comme des formulaires)
Feuilles au format tableau (lignes x colonnes)
JSON en tant que string
var parser = new ExcelToJsonParser();
string json = parser.GetJsonStringFromTabular("arquivo.xlsx");JSON en tant qu'objets (IEnumerable)
var parser = new ExcelToJsonParser();
var objList = parser.GetJsonObjectFromTabular("arquivo.xlsx");
foreach(var obj in objList)
{
...
}DataTable (avec ou sans en-tête)
DataTable data = parser.GetDataTable("arquivo.xlsx", skipRows: 1, useHeader: true);Classes C# à partir des noms de colonnes
string classFile = parser.GetClassModelFromTabular("arquivo.xlsx");Feuilles structurées comme un formulaire (ex. : "Champ: Valeur").
JSON en tant que string
string json = parser.GetJsonStringFromForm("arquivo.xlsx", "FichaCliente");JSON en tant qu'objet
var obj = parser.GetJsonObjectFromForm("arquivo.xlsx", "FichaCliente");Dictionary<string, object>
var dict = parser.GetDictionary("arquivo.xlsx", "FichaCliente");Classe C#
string classModel = parser.GetClassModelFromForm("arquivo.xlsx", "FichaCliente");skipRows : Ignore les premières lignes.
replaceFrom / replaceTo : Permet de remplacer des parties des noms de colonnes.
headerColumns : Permet de fournir manuellement l'en-tête Excel.
onlySampleRow : Quand true, ne lit qu'une seule ligne. Utilisé en interne pour la génération de modèles C#.
Lire une feuille tabulaire en ignorant 2 lignes et en normalisant les en-têtes
var parser = new ExcelToJsonParser();
string json = parser.GetJsonStringFromTabular(
"produtos.xlsx",
skipRows: 2,
replaceFrom: new[] { " ", "-" },
replaceTo: new[] { "_", "" }
);
Console.WriteLine(json);Exemple typique du mode Tabular :
[
{
"Nome": "Ana",
"Idade": 30,
"Ativo": true
},
{
"Nome": "João",
"Idade": 22,
"Ativo": false
}
]Mode Form :
{
"Nome": "Carlos",
"CPF": "111.222.333-44",
"Telefone": "(11) 99999-0000"
}Traitement asynchrone ligne par ligne pour de gros volumes de données.
using var parser = new ExcelToJsonParser();
using var stream = File.OpenRead("grande.xlsx");
await foreach (var row in parser.StreamFromTabular(stream))
{
Console.WriteLine(row["Nome"]);
}Règles de validation par colonne avant traitement.
var rules = new[]
{
new ValidationRule { ColumnName = "Email", Type = "required", Message = "Email obrigatório" },
new ValidationRule { ColumnName = "Idade", Type = "numeric" },
new ValidationRule { ColumnName = "UF", Type = "in_list", AllowedValues = new[] { "SP", "RJ" } },
new ValidationRule { ColumnName = "CPF", Type = "regex", Pattern = @"^\d{3}\.\d{3}\.\d{3}-\d{2}$" }
};
var result = parser.ValidateTabular(stream, rules);
if (!result.IsValid)
result.Errors.ForEach(e => Console.WriteLine(e.Message));Types disponibles : required, max_length, min_length, numeric, date, in_list, regex.
Appliquer des transformations aux valeurs lues.
var transforms = new[]
{
new TransformConfig { Type = "trim" },
new TransformConfig { Type = "upper_case" },
new TransformConfig { Type = "replace", Params = new() { { "from", " " }, { "to", "_" } } }
};
var clean = parser.ApplyTransforms(" joao silva ", transforms); // "JOAO_SILVA"Types disponibles : trim, upper_case, lower_case, title_case, replace, to_decimal, to_int, to_date, to_boolean, default, split, map_values.
Lire toutes les feuilles à la fois.
var allSheets = parser.GetJsonStringsFromAllSheets("multi.xlsx");
foreach (var kvp in allSheets)
Console.WriteLine($"{kvp.Key}: {kvp.Value}");var data = new List<IDictionary<string, object>>
{
new Dictionary<string, object> { { "Nome", "João" }, { "Idade", 30 } }
};
byte[] excelBytes = parser.TabularToExcel(data, "Pessoas");
File.WriteAllBytes("saida.xlsx", excelBytes);using var csvStream = File.OpenRead("dados.csv");
byte[] excelBytes = parser.CsvToExcel(csvStream, delimiter: ",");
File.WriteAllBytes("saida.xlsx", excelBytes);var json = @"[{""Nome"":""João"",""Idade"":30},{""Nome"":""Maria"",""Idade"":25}]";
byte[] excelBytes = parser.JsonToExcel(json, "Pessoas");
File.WriteAllBytes("saida.xlsx", excelBytes);byte[] csvBytes = parser.JsonToCsv(json, delimiter: ";");
File.WriteAllBytes("saida.csv", csvBytes);using Stream csvStream = parser.JsonToCsvStream(json);var xml = @"<Pessoas><Pessoa><Nome>João</Nome><Idade>30</Idade></Pessoa></Pessoas>";
byte[] excelBytes = parser.XmlToExcel(xml, "Pessoas");
File.WriteAllBytes("saida.xlsx", excelBytes);byte[] csvBytes = parser.XmlToCsv(xml);ExcelToJsonParser implémente IDisposable. Utilisez using pour garantir une libération adéquate des ressources.
using var parser = new ExcelToJsonParser();
// ... usage- ExcelDataReader 3.9.0 — Lecture .xls/.xlsx/.xlsb
- ClosedXML 0.102.3 — Écriture .xlsx
- System.Text.Json 8.0.5 — Sérialisation JSON
- NJsonSchema 10.1.16 — Génération de classes C#
dotnet test Rochas.ExcelToJsonParser.Tests/140 tests couvrant : Tabular, Form, Streaming, Multi-sheet, Validation, Transform, Export, Reverse Flow, Error Handling.
- .NET Standard 2.1 / .NET 6+ / .NET 8+ / .NET 9
- NuGet :
dotnet add package Rochas.ExcelToJsonParser
Dienstprogrammkomponente zum Konvertieren von Excel-Dateien in JSON, DataTable, dynamische Objekte und C#-Modelle (automatisch generiert via NJsonSchema).
Es werden zwei Hauptlesemodi unterstützt:
- Tabular Sheet (Tabellenformat)
- Form Sheet (formularstrukturierte Blätter)
Blätter im Tabellenformat (Zeilen x Spalten)
JSON als String
var parser = new ExcelToJsonParser();
string json = parser.GetJsonStringFromTabular("arquivo.xlsx");JSON als Objekte (IEnumerable)
var parser = new ExcelToJsonParser();
var objList = parser.GetJsonObjectFromTabular("arquivo.xlsx");
foreach(var obj in objList)
{
...
}DataTable (mit oder ohne Kopfzeile)
DataTable data = parser.GetDataTable("arquivo.xlsx", skipRows: 1, useHeader: true);C#-Klassen aus Spaltennamen
string classFile = parser.GetClassModelFromTabular("arquivo.xlsx");Blätter als Formular strukturiert (z. B.: "Feld: Wert").
JSON als String
string json = parser.GetJsonStringFromForm("arquivo.xlsx", "FichaCliente");JSON als Objekt
var obj = parser.GetJsonObjectFromForm("arquivo.xlsx", "FichaCliente");Dictionary<string, object>
var dict = parser.GetDictionary("arquivo.xlsx", "FichaCliente");C#-Klasse
string classModel = parser.GetClassModelFromForm("arquivo.xlsx", "FichaCliente");skipRows: Überspringt die ersten Zeilen.
replaceFrom / replaceTo: Ersetzt Teile der Spaltennamen.
headerColumns: Excel-Kopfzeile manuell angeben.
onlySampleRow: Wenn true, wird nur 1 Zeile gelesen. Wird intern für die C#-Modellgenerierung verwendet.
Tabellenblatt lesen, dabei 2 Zeilen überspringen und Kopfzeilen normalisieren
var parser = new ExcelToJsonParser();
string json = parser.GetJsonStringFromTabular(
"produtos.xlsx",
skipRows: 2,
replaceFrom: new[] { " ", "-" },
replaceTo: new[] { "_", "" }
);
Console.WriteLine(json);Typisches Beispiel für den Tabular-Modus:
[
{
"Nome": "Ana",
"Idade": 30,
"Ativo": true
},
{
"Nome": "João",
"Idade": 22,
"Ativo": false
}
]Form-Modus:
{
"Nome": "Carlos",
"CPF": "111.222.333-44",
"Telefone": "(11) 99999-0000"
}Asynchrone zeilenweise Verarbeitung für große Datenmengen.
using var parser = new ExcelToJsonParser();
using var stream = File.OpenRead("grande.xlsx");
await foreach (var row in parser.StreamFromTabular(stream))
{
Console.WriteLine(row["Nome"]);
}Spaltenweise Validierungsregeln vor der Verarbeitung.
var rules = new[]
{
new ValidationRule { ColumnName = "Email", Type = "required", Message = "Email obrigatório" },
new ValidationRule { ColumnName = "Idade", Type = "numeric" },
new ValidationRule { ColumnName = "UF", Type = "in_list", AllowedValues = new[] { "SP", "RJ" } },
new ValidationRule { ColumnName = "CPF", Type = "regex", Pattern = @"^\d{3}\.\d{3}\.\d{3}-\d{2}$" }
};
var result = parser.ValidateTabular(stream, rules);
if (!result.IsValid)
result.Errors.ForEach(e => Console.WriteLine(e.Message));Verfügbare Typen: required, max_length, min_length, numeric, date, in_list, regex.
Transformationen auf die gelesenen Werte anwenden.
var transforms = new[]
{
new TransformConfig { Type = "trim" },
new TransformConfig { Type = "upper_case" },
new TransformConfig { Type = "replace", Params = new() { { "from", " " }, { "to", "_" } } }
};
var clean = parser.ApplyTransforms(" joao silva ", transforms); // "JOAO_SILVA"Verfügbare Typen: trim, upper_case, lower_case, title_case, replace, to_decimal, to_int, to_date, to_boolean, default, split, map_values.
Alle Blätter auf einmal lesen.
var allSheets = parser.GetJsonStringsFromAllSheets("multi.xlsx");
foreach (var kvp in allSheets)
Console.WriteLine($"{kvp.Key}: {kvp.Value}");var data = new List<IDictionary<string, object>>
{
new Dictionary<string, object> { { "Nome", "João" }, { "Idade", 30 } }
};
byte[] excelBytes = parser.TabularToExcel(data, "Pessoas");
File.WriteAllBytes("saida.xlsx", excelBytes);using var csvStream = File.OpenRead("dados.csv");
byte[] excelBytes = parser.CsvToExcel(csvStream, delimiter: ",");
File.WriteAllBytes("saida.xlsx", excelBytes);var json = @"[{""Nome"":""João"",""Idade"":30},{""Nome"":""Maria"",""Idade"":25}]";
byte[] excelBytes = parser.JsonToExcel(json, "Pessoas");
File.WriteAllBytes("saida.xlsx", excelBytes);byte[] csvBytes = parser.JsonToCsv(json, delimiter: ";");
File.WriteAllBytes("saida.csv", csvBytes);using Stream csvStream = parser.JsonToCsvStream(json);var xml = @"<Pessoas><Pessoa><Nome>João</Nome><Idade>30</Idade></Pessoa></Pessoas>";
byte[] excelBytes = parser.XmlToExcel(xml, "Pessoas");
File.WriteAllBytes("saida.xlsx", excelBytes);byte[] csvBytes = parser.XmlToCsv(xml);ExcelToJsonParser implementiert IDisposable. using verwenden, um eine ordnungsgemäße Ressourcenfreigabe sicherzustellen.
using var parser = new ExcelToJsonParser();
// ... Verwendung- ExcelDataReader 3.9.0 — Lesen .xls/.xlsx/.xlsb
- ClosedXML 0.102.3 — Schreiben .xlsx
- System.Text.Json 8.0.5 — JSON-Serialisierung
- NJsonSchema 10.1.16 — C#-Klassengenerierung
dotnet test Rochas.ExcelToJsonParser.Tests/140 Tests für: Tabular, Form, Streaming, Multi-sheet, Validation, Transform, Export, Reverse Flow, Error Handling.
- .NET Standard 2.1 / .NET 6+ / .NET 8+ / .NET 9
- NuGet:
dotnet add package Rochas.ExcelToJsonParser