robbiblubber.org
DE
Projekte
Collection.NETMIT

Data.Util.NET.

Robbiblubber.Data.Util.NET

Daten für den nächsten Schritt aufbereiten: typisierte Sammlungen als CSV oder Excel ausgeben, SQL-INSERT-Anweisungen aus Abfrageergebnissen erzeugen und OData-Dienste seitenweise lesen. Vier Bibliotheken, die sich einzeln in eigene .NET-Anwendungen einbinden lassen.

.NET 8.NET 10

Bibliotheken & Erweiterungen

4

Die Bibliotheken sind als einzelne NuGet-Pakete verfügbar. Installiere die Bausteine, die dein Projekt braucht.

Bibliothek

Robbiblubber.Data.Util.CSV

CSV-Export für IEnumerable<T>: Spalten und Überschriften explizit definieren, Werte über Funktionen auswählen und die Ausgabe an das gewünschte CSV-Format anpassen.

Für .NET-AnwendungenZielframeworks: net8.0 / net10.0

Das steckt drin

  • CsvExport<T> verarbeitet eigene Datentypen; DataField<T> legt Spaltenreihenfolge, Überschrift und Wertauswahl fest.
  • Trennzeichen, Dezimaltrennzeichen, Anführungszeichen, Zeilenende und Dateikodierung sind konfigurierbar.
  • CsvOptions.GERMAN bietet Semikolon und Dezimalkomma als Voreinstellung; Kopfzeilen sind optional.
  • Ausgabe als Datei, Stream, TextWriter oder Zeichenfolge; synchrone und asynchrone Methoden.
Ein kleiner Einstieg C#
using Robbiblubber.Data.Util.CSV;

CsvExport<Product> export = new(
    fieldDefinition:
    [
        new CsvExport.DataField<Product>("Name", p => p.Name),
        new CsvExport.DataField<Product>("Price", p => p.Price)
    ],
    csvOptions: CsvOptions.GERMAN.Clone());

await export.WriteToFileAsync("products.csv", [new Product("Notebook", 4.50m)]);

record Product(string Name, decimal Price);

Zwei explizite Spalten, eine Kopfzeile und deutsches Zahlenformat. Eigene Anpassungen an einer Kopie der Optionen vornehmen.

Installation
dotnet add package Robbiblubber.Data.Util.CSV
Bibliothek

Robbiblubber.Data.Util.Excel

Excel-Dateien aus typisierten Daten erzeugen: Spalten, Arbeitsblatt und Zellformatierung festlegen und das Ergebnis als XLSX-Datei oder Stream ausgeben.

Verwendet ClosedXML; keine installierte Excel-Anwendung erforderlichZielframeworks: net8.0 / net10.0

Das steckt drin

  • ExcelExport<T> und DataField<T> verbinden eigene Datentypen mit Spaltenüberschriften und Wertfunktionen.
  • Arbeitsblattname, Spaltenbreiten und optionale Kopfzeile konfigurieren; Zahlen, Datum und andere Werte als passende Zellwerte schreiben.
  • Farben, Rahmen, Fettdruck und Kursivschrift für Kopf- und Datenzellen; eigene Formate für erste und letzte Datenzeile.
  • CustomizeCell erlaubt zusätzliche ClosedXML-Anpassungen pro Zelle; Ausgabe in Dateien und Streams.
Ein kleiner Einstieg C#
using Robbiblubber.Data.Util.Excel;

ExcelExport<Product> export = new(
    fieldDefinition:
    [
        new ExcelExport.DataField<Product>("Name", p => p.Name),
        new ExcelExport.DataField<Product>("Price", p => p.Price)
    ],
    columnWidths: [28d, 14d], worksheetName: "Products");

export.WriteToFile("products.xlsx", [new Product("Notebook", 4.50m)]);

record Product(string Name, decimal Price);

Erstellt ein Arbeitsblatt mit zwei Spalten. Eine Spaltenbreite pro definierter Spalte angeben.

Installation
dotnet add package Robbiblubber.Data.Util.Excel
Bibliothek

Robbiblubber.Data.Util.Export

Ergebnisse einer SQL-Abfrage als INSERT-Anweisungen ausgeben. SqlExport liest über eine vorhandene ADO.NET-Verbindung und erzeugt ein Skript für die angegebene Zieltabelle.

Geöffnete IDbConnection und passender ADO.NET-ProviderZielframeworks: net8.0 / net10.0

Das steckt drin

  • Eine eigene SELECT-Abfrage bestimmt, welche Zeilen und Spalten exportiert werden.
  • Pro Ergebniszeile entsteht eine INSERT-Anweisung; die Namen der Ergebnisspalten werden übernommen.
  • Behandelt Zeichenfolgen mit Apostrophen, NULL, Datum/Uhrzeit und kulturunabhängige Dezimalzahlen.
  • Statements liefert die einzelnen Anweisungen, ToString() das zusammengefügte Skript. Die SQL-Syntax ist für das jeweilige Zielsystem zu prüfen.
Ein kleiner Einstieg C#
using System.Data;
using Robbiblubber.Data.Util.Export;

static string ExportProducts(IDbConnection connection)
{
    using SqlExport export = new(connection, "Products_Copy",
        "SELECT Id, Name, Price FROM Products");
    export.Execute();
    return export.ToString();
}

Die Verbindung muss bereits geöffnet sein. Execute() liest die Quelle und erzeugt das Skript; die INSERT-Anweisungen werden dabei nicht ausgeführt.

Installation
dotnet add package Robbiblubber.Data.Util.Export
Bibliothek

Robbiblubber.Data.Util.OData

OData-JSON-Daten mit einem vorhandenen HttpClient lesen: Seiten einzeln abrufen oder Datensätze mit await foreach durchlaufen. OData-Fortsetzungslinks werden dabei verfolgt.

OData-JSON-Endpunkt mit value-Array; HttpClient für den Dienst konfigurierenZielframeworks: net8.0 / net10.0

Das steckt drin

  • NextPageAsync liefert eine Seite als JsonObject, NextValuesAsync deren value-Array.
  • IAsyncEnumerable<JsonObject> ermöglicht await foreach über die Datensätze mehrerer Seiten.
  • @odata.nextLink steuert den nächsten Abruf; relative und absolute HTTP(S)-Fortsetzungslinks werden unterstützt.
  • OnRequest erlaubt eigene HTTP-Header; CancellationToken unterstützt Abbruch, Rewind() setzt den Leser zurück.
Ein kleiner Einstieg C#
using Robbiblubber.Data.Util.OData;

using HttpClient client = new();
ODataReader reader = new(client,
    "https://service.example.org/odata/Products?$select=Id,Name");

await foreach (var product in reader)
{
    Console.WriteLine(product["Name"]);
}

Die Beispiel-URL ersetzen und HttpClient bei Bedarf für die Authentifizierung konfigurieren. Der Reader liefert JsonObject-Datensätze.

Installation
dotnet add package Robbiblubber.Data.Util.OData

Die .NET-Bibliotheken werden über NuGet verteilt. Tools und Bibliotheken bleiben ihren Suites und Collections zugeordnet.

Alle Projekte ansehen