@page "/workspace/{*WorkspaceId}" @using ZahlenAnalyse.Web.Models @using ZahlenAnalyse.Web.Services @inject WorkspaceService DbService @inject ISnackbar Snackbar @inject NavigationManager NavManager @if (_workspace == null) { } else { @_workspace.Name Daten importieren Lade eine Excel-Datei hoch, um Fakten in diesen Workspace zu importieren. Excel hochladen Dimensionen @foreach (var dim in _workspace.Dimensions) { @dim.Name } Letzte Importe / Einträge Datum Betrag Details @context.Date.ToShortDateString() @context.Amount.ToString("N2") € @string.Join(" | ", context.Dimensions.Values) } @code { [Parameter] public string WorkspaceId { get; set; } = string.Empty; private Workspace? _workspace; private List _recentFakten = new(); protected override async Task OnInitializedAsync() { _workspace = await DbService.GetWorkspaceAsync(WorkspaceId); if (_workspace != null) { _recentFakten = await DbService.GetFaktenForWorkspaceAsync(WorkspaceId); _recentFakten = _recentFakten.Take(5).ToList(); } } private async Task UploadFile(Microsoft.AspNetCore.Components.Forms.IBrowserFile e) { var file = e; if (file == null) return; try { // 1. Datenstrom vom Browser öffnen using var browserStream = file.OpenReadStream(maxAllowedSize: 1024 * 1024 * 10); // 10MB // 2. Den Stream komplett in den "Eimer" (Arbeitsspeicher) laden using var memoryStream = new MemoryStream(); await browserStream.CopyToAsync(memoryStream); // 3. WICHTIG: Den Lese-Zeiger im Eimer wieder nach ganz oben setzen! memoryStream.Position = 0; // 4. Den fertigen MemoryStream an den Service übergeben await DbService.ImportFromExcelAsync(WorkspaceId, memoryStream); Snackbar.Add("Import erfolgreich!", Severity.Success); // Die Tabelle mit den neuen Daten aktualisieren _recentFakten = (await DbService.GetFaktenForWorkspaceAsync(WorkspaceId)).Take(5).ToList(); } catch (Exception ex) { Snackbar.Add($"Fehler beim Import: {ex.Message}", Severity.Error); } } }