Beispiel #1
0
    public async Task Spreadsheet_StartWorksheet_ColumnWidth(double?width)
    {
        // Arrange
        var worksheetOptions = new WorksheetOptions();

        worksheetOptions.Column(1).Width = width;
        const double defaultWidthInExcelUi = 8.43;
        const double defaultWidthInXml     = defaultWidthInExcelUi + 0.71062;
        var          expectedWidth         = width ?? defaultWidthInXml;

        using var stream = new MemoryStream();
        await using (var spreadsheet = await Spreadsheet.CreateNewAsync(stream))
        {
            // Act
            await spreadsheet.StartWorksheetAsync("My sheet", worksheetOptions);

            await spreadsheet.FinishAsync();
        }

        // Assert
        SpreadsheetAssert.Valid(stream);
        using var package = new ExcelPackage(stream);
        var worksheet   = package.Workbook.Worksheets.Single();
        var actualWidth = worksheet.Column(1).Width;

        Assert.Equal(expectedWidth, actualWidth, 5);
    }
Beispiel #2
0
    public async Task Spreadsheet_StartWorksheet_NoFreezing()
    {
        // Arrange
        var worksheetOptions = new WorksheetOptions();

        using var stream = new MemoryStream();
        await using (var spreadsheet = await Spreadsheet.CreateNewAsync(stream))
        {
            // Act
            await spreadsheet.StartWorksheetAsync("My sheet", worksheetOptions);

            await spreadsheet.FinishAsync();
        }

        // Assert
        SpreadsheetAssert.Valid(stream);
        using var actual = SpreadsheetDocument.Open(stream, true);
        var worksheet = actual.WorkbookPart !.WorksheetParts.Select(x => x.Worksheet).Single();

        Assert.Null(worksheet.SheetViews);
    }
Beispiel #3
0
    public async Task Spreadsheet_StartWorksheet_Freezing(int?columns, int?rows)
    {
        // Arrange
        var worksheetOptions = new WorksheetOptions
        {
            FrozenColumns = columns,
            FrozenRows    = rows
        };

        var expectedColumnName    = CellReferenceHelper.GetExcelColumnName((columns ?? 0) + 1);
        var expectedCellReference = $"{expectedColumnName}{(rows ?? 0) + 1}";
        var expectedActivePane    = columns switch
        {
            not null when rows is not null => PaneValues.BottomRight,
            not null => PaneValues.TopRight,
            _ => PaneValues.BottomLeft
        };

        using var stream = new MemoryStream();
        await using (var spreadsheet = await Spreadsheet.CreateNewAsync(stream))
        {
            // Act
            await spreadsheet.StartWorksheetAsync("My sheet", worksheetOptions);

            await spreadsheet.FinishAsync();
        }

        // Assert
        SpreadsheetAssert.Valid(stream);
        using var actual = SpreadsheetDocument.Open(stream, true);
        var worksheet = actual.WorkbookPart !.WorksheetParts.Select(x => x.Worksheet).Single();
        var sheetView = worksheet.SheetViews !.Cast <SheetView>().Single();

        Assert.Equal(PaneStateValues.Frozen, sheetView.Pane !.State !.Value);
        Assert.Equal(columns, (int?)sheetView.Pane.HorizontalSplit?.Value);
        Assert.Equal(rows, (int?)sheetView.Pane.VerticalSplit?.Value);
        Assert.Equal(expectedCellReference, sheetView.Pane.TopLeftCell?.Value);
        Assert.Equal(expectedActivePane, sheetView.Pane.ActivePane?.Value);
    }
Beispiel #4
0
    private static void WriteSheetViewsXml(StringBuilder sb, WorksheetOptions options)
    {
        sb.Append("<sheetViews><sheetView workbookViewId=\"0\"><pane ");

        if (options.FrozenColumns is not null)
        {
            sb.Append("xSplit=\"").Append(options.FrozenColumns.Value).Append("\" ");
        }

        if (options.FrozenRows is not null)
        {
            sb.Append("ySplit=\"").Append(options.FrozenRows.Value).Append("\" ");
        }

        sb.Append("topLeftCell=\"");
        sb.AppendColumnName((options.FrozenColumns ?? 0) + 1);
        sb.Append((options.FrozenRows ?? 0) + 1);
        sb.Append("\" activePane=\"");

        if (options.FrozenColumns is not null && options.FrozenRows is not null)
        {
            sb.Append("bottomRight");
        }