예제 #1
0
        private void CheckWorkbookGrouping(IWorkbook wb, bool?[] collapsed, bool[] hidden, int[] outlineLevel)
        {
            printWorkbook(wb);
            ISheet sheet = wb.GetSheetAt(0);

            Assert.AreEqual(collapsed.Length, hidden.Length);
            Assert.AreEqual(collapsed.Length, outlineLevel.Length);
            Assert.AreEqual(collapsed.Length, sheet.LastRowNum - sheet.FirstRowNum + 1,
                            "Expected " + collapsed.Length + " rows with collapsed state, but had " + (sheet.LastRowNum - sheet.FirstRowNum + 1) + " rows ("
                            + sheet.FirstRowNum + "-" + sheet.LastRowNum + ")");
            for (int i = sheet.FirstRowNum; i < sheet.LastRowNum; i++)
            {
                if (collapsed[i - sheet.FirstRowNum] == null)
                {
                    continue;
                }
                XSSFRow row = (XSSFRow)sheet.GetRow(i);
                Assert.IsNotNull(row, "Could not read row " + i);
                Assert.IsNotNull(row.GetCTRow(), "Could not read row " + i);
                Assert.AreEqual(collapsed[i - sheet.FirstRowNum], row.GetCTRow().collapsed, "Row: " + i + ": collapsed");
                Assert.AreEqual(hidden[i - sheet.FirstRowNum], row.GetCTRow().hidden, "Row: " + i + ": hidden");

                Assert.AreEqual(outlineLevel[i - sheet.FirstRowNum], row.GetCTRow().outlineLevel, "Row: " + i + ": level");
            }

            WriteToFile(wb);
        }
예제 #2
0
        /**
         * Synchronize table headers with cell values in the parent sheet.
         * Headers <em>must</em> be in sync, otherwise Excel will display a
         * "Found unreadable content" message on startup.
         */
        public void UpdateHeaders()
        {
            XSSFSheet     sheet = (XSSFSheet)GetParent();
            CellReference ref1  = GetStartCellReference() as CellReference;

            if (ref1 == null)
            {
                return;
            }

            int     headerRow         = ref1.Row;
            int     firstHeaderColumn = ref1.Col;
            XSSFRow row = sheet.GetRow(headerRow) as XSSFRow;

            if (row != null && row.GetCTRow() != null)
            {
                int cellnum = firstHeaderColumn;
                foreach (CT_TableColumn col in GetCTTable().tableColumns.tableColumn)
                {
                    XSSFCell cell = row.GetCell(cellnum) as XSSFCell;
                    if (cell != null)
                    {
                        col.name = (cell.StringCellValue);
                    }
                    cellnum++;
                }
            }
        }
예제 #3
0
        public void TestBug57423()
        {
            XSSFWorkbook workbook  = new XSSFWorkbook();
            XSSFSheet    sheet     = (XSSFSheet)workbook.CreateSheet();
            CT_Worksheet wsh       = sheet.GetCTWorksheet();
            CT_SheetData sheetData = wsh.sheetData;

            XSSFRow row1 = (XSSFRow)sheet.CreateRow(0);

            row1.CreateCell(0).SetCellValue("a");

            XSSFRow row2 = (XSSFRow)sheet.CreateRow(1);

            row2.CreateCell(0).SetCellValue("b");

            XSSFRow row3 = (XSSFRow)sheet.CreateRow(2);

            row3.CreateCell(0).SetCellValue("c");

            sheet.ShiftRows(0, 1, 3); //move "a" and "b" 3 rows down
            //      Before:    After:
            //         A        A
            // 1       a        <empty>
            // 2       b        <empty>
            // 3       c        c
            // 4                a
            // 5                b

            List <CT_Row> xrow = sheetData.row;

            Assert.AreEqual(3, xrow.Count);

            // Rows are sorted: [3, 4, 5]
            Assert.AreEqual(3u, xrow[0].r);
            Assert.IsTrue(xrow[0].Equals(row3.GetCTRow()));

            Assert.AreEqual(4u, xrow[1].r);
            Assert.IsTrue(xrow[1].Equals(row1.GetCTRow()));

            Assert.AreEqual(5u, xrow[2].r);
            Assert.IsTrue(xrow[2].Equals(row2.GetCTRow()));
        }