Esempio n. 1
0
        public void AutoSizeColumn_trackAllColumns()
        {
            workbook = new SXSSFWorkbook();
            sheet    = workbook.CreateSheet() as SXSSFSheet;

            sheet.TrackAllColumnsForAutoSizing();
            sheet.AutoSizeColumn(0, useMergedCells);

            sheet.UntrackAllColumnsForAutoSizing();
            try
            {
                sheet.AutoSizeColumn(0, useMergedCells);
                Assert.Fail("Should not be able to auto-size an implicitly untracked column");
            }
            catch (InvalidOperationException)
            {
                // expected
            }
        }
Esempio n. 2
0
        public void Test_EmptySheet_NoException()
        {
            workbook = new SXSSFWorkbook();
            sheet    = workbook.CreateSheet() as SXSSFSheet;
            sheet.TrackAllColumnsForAutoSizing();

            for (int i = 0; i < 10; i++)
            {
                sheet.AutoSizeColumn(i, useMergedCells);
            }
        }
Esempio n. 3
0
        public void AutoSizeColumn_untrackColumnForAutoSizing()
        {
            workbook = new SXSSFWorkbook();
            sheet    = workbook.CreateSheet() as SXSSFSheet;

            sheet.TrackColumnsForAutoSizing(columns);
            sheet.UntrackColumnForAutoSizing(columns.First());

            Assume.That(sheet.TrackedColumnsForAutoSizing.Contains(columns.Last()));
            sheet.AutoSizeColumn(columns.Last(), useMergedCells);
            try
            {
                Assume.That(!sheet.TrackedColumnsForAutoSizing.Contains(columns.First()));
                sheet.AutoSizeColumn(columns.First(), useMergedCells);
                Assert.Fail("Should not be able to auto-size an untracked column");
            }
            catch (InvalidOperationException)
            {
                // expected
            }
        }
Esempio n. 4
0
        public void Test_WindowSizeEqualsOne_flushedRowHasMergedCell()
        {
            workbook = new SXSSFWorkbook(null, 1); // Window size 1 so only last row will be in memory
            sheet    = workbook.CreateSheet() as SXSSFSheet;
            sheet.TrackAllColumnsForAutoSizing();

            ICell a1 = CreateRowWithCellValues(sheet, 0, LONG_CELL_VALUE);

            assumeRequiredFontsAreInstalled(workbook, a1);
            sheet.AddMergedRegion(CellRangeAddress.ValueOf("A1:B1"));

            CreateRowWithCellValues(sheet, 1, SHORT_CELL_VALUE, SHORT_CELL_VALUE);

            /**
             *    A      B
             * 1 LONGMERGED
             * 2 SHORT SHORT
             */

            sheet.AutoSizeColumn(0, useMergedCells);
            sheet.AutoSizeColumn(1, useMergedCells);

            if (useMergedCells)
            {
                // Excel and LibreOffice behavior: ignore merged cells for auto-sizing.
                // POI behavior: evenly distribute the column width among the merged columns.
                //               each column must be auto-sized in order for the column widths
                //               to add up to the best fit width.
                int colspan          = 2;
                int expectedWidth    = (10000 + 1000) / colspan; //average of 1_000 and 10_000
                int minExpectedWidth = expectedWidth / 2;
                int maxExpectedWidth = expectedWidth * 3 / 2;
                assertColumnWidthStrictlyWithinRange(sheet.GetColumnWidth(0), minExpectedWidth, maxExpectedWidth); //short
            }
            else
            {
                assertColumnWidthStrictlyWithinRange(sheet.GetColumnWidth(0), COLUMN_WIDTH_THRESHOLD_BETWEEN_SHORT_AND_LONG, MAX_COLUMN_WIDTH); //long
            }
            assertColumnWidthStrictlyWithinRange(sheet.GetColumnWidth(1), 0, COLUMN_WIDTH_THRESHOLD_BETWEEN_SHORT_AND_LONG);                    //short
        }
Esempio n. 5
0
        public void AutoSizeColumn_trackColumnForAutoSizing()
        {
            workbook = new SXSSFWorkbook();
            sheet    = workbook.CreateSheet() as SXSSFSheet;
            sheet.TrackColumnForAutoSizing(0);

            SortedSet <int> expected = new SortedSet <int>();

            expected.Add(0);
            Assert.AreEqual(expected, sheet.TrackedColumnsForAutoSizing);

            sheet.AutoSizeColumn(0, useMergedCells);
            try
            {
                sheet.AutoSizeColumn(1, useMergedCells);
                Assert.Fail("Should not be able to auto-size an untracked column");
            }
            catch (InvalidOperationException)
            {
                // expected
            }
        }
Esempio n. 6
0
        public void AutoSizeColumn_trackColumnsForAutoSizing()
        {
            workbook = new SXSSFWorkbook();
            sheet    = workbook.CreateSheet() as SXSSFSheet;

            sheet.TrackColumnsForAutoSizing(columns);
            SortedSet <int> sorted = new SortedSet <int>(columns);

            Assert.AreEqual(sorted, sheet.TrackedColumnsForAutoSizing);

            sheet.AutoSizeColumn(sorted.First(), useMergedCells);
            try
            {
                //assumeFalse(columns.Contains(5));
                Assume.That(!columns.Contains(5));
                sheet.AutoSizeColumn(5, useMergedCells);
                Assert.Fail("Should not be able to auto-size an untracked column");
            }
            catch (InvalidOperationException)
            {
                // expected
            }
        }
Esempio n. 7
0
        public void Test_WindowSizeDefault_AllRowsFitIntoWindowSize()
        {
            workbook = new SXSSFWorkbook();
            sheet    = workbook.CreateSheet() as SXSSFSheet;
            sheet.TrackAllColumnsForAutoSizing();

            ICell cellRow0 = CreateRowWithCellValues(sheet, 0, LONG_CELL_VALUE);

            assumeRequiredFontsAreInstalled(workbook, cellRow0);

            CreateRowWithCellValues(sheet, 1, SHORT_CELL_VALUE);

            sheet.AutoSizeColumn(0, useMergedCells);

            assertColumnWidthStrictlyWithinRange(sheet.GetColumnWidth(0), COLUMN_WIDTH_THRESHOLD_BETWEEN_SHORT_AND_LONG, MAX_COLUMN_WIDTH);
        }
Esempio n. 8
0
        public void Test_WindowSizeEqualsOne_lastRowIsWidest()
        {
            workbook = new SXSSFWorkbook(null, 1); // Window size 1 so only last row will be in memory
            sheet    = workbook.CreateSheet() as SXSSFSheet;
            sheet.TrackAllColumnsForAutoSizing();

            ICell cellRow0 = CreateRowWithCellValues(sheet, 0, SHORT_CELL_VALUE);

            assumeRequiredFontsAreInstalled(workbook, cellRow0);

            CreateRowWithCellValues(sheet, 1, LONG_CELL_VALUE);

            sheet.AutoSizeColumn(0, useMergedCells);

            assertColumnWidthStrictlyWithinRange(sheet.GetColumnWidth(0), COLUMN_WIDTH_THRESHOLD_BETWEEN_SHORT_AND_LONG, MAX_COLUMN_WIDTH);
        }