Exemple #1
0
        public void TestWithoutFeatRecord()
        {
            HSSFWorkbook hssf =
                HSSFTestDataSamples.OpenSampleWorkbook("46136-WithWarnings.xls");
            InternalWorkbook wb = HSSFTestHelper.GetWorkbookForTest(hssf);

            Assert.AreEqual(1, hssf.NumberOfSheets);

            int countFR  = 0;
            int countFRH = 0;

            // Check on the workbook, but shouldn't be there!
            foreach (Record r in wb.Records)
            {
                if (r is FeatRecord)
                {
                    countFR++;
                }
                else if (r.Sid == FeatRecord.sid)
                {
                    countFR++;
                }
                if (r is FeatHdrRecord)
                {
                    countFRH++;
                }
                else if (r.Sid == FeatHdrRecord.sid)
                {
                    countFRH++;
                }
            }

            Assert.AreEqual(0, countFR);
            Assert.AreEqual(0, countFRH);

            // Now check on the sheet
            HSSFSheet     s     = (HSSFSheet)hssf.GetSheetAt(0);
            InternalSheet sheet = HSSFTestHelper.GetSheetForTest(s);

            foreach (RecordBase rb in sheet.Records)
            {
                if (rb is Record)
                {
                    Record r = (Record)rb;
                    if (r is FeatRecord)
                    {
                        countFR++;
                    }
                    else if (r.Sid == FeatRecord.sid)
                    {
                        countFR++;
                    }
                    if (r is FeatHdrRecord)
                    {
                        countFRH++;
                    }
                    else if (r.Sid == FeatHdrRecord.sid)
                    {
                        countFRH++;
                    }
                }
            }

            Assert.AreEqual(0, countFR);
            Assert.AreEqual(0, countFRH);
        }
Exemple #2
0
        public void AddPictures()
        {
            IWorkbook wb = new HSSFWorkbook();

            ISheet   sh = wb.CreateSheet("Pictures");
            IDrawing dr = sh.CreateDrawingPatriarch();

            Assert.AreEqual(0, ((HSSFPatriarch)dr).Children.Count);
            IClientAnchor anchor = wb.GetCreationHelper().CreateClientAnchor();

            //register a picture
            byte[] data1 = new byte[] { 1, 2, 3 };
            int    idx1  = wb.AddPicture(data1, PictureType.JPEG);

            Assert.AreEqual(1, idx1);
            IPicture p1 = dr.CreatePicture(anchor, idx1);

            Assert.IsTrue(Arrays.Equals(data1, ((HSSFPicture)p1).PictureData.Data));

            // register another one
            byte[] data2 = new byte[] { 4, 5, 6 };
            int    idx2  = wb.AddPicture(data2, PictureType.JPEG);

            Assert.AreEqual(2, idx2);
            IPicture p2 = dr.CreatePicture(anchor, idx2);

            Assert.AreEqual(2, ((HSSFPatriarch)dr).Children.Count);
            Assert.IsTrue(Arrays.Equals(data2, ((HSSFPicture)p2).PictureData.Data));

            // confirm that HSSFPatriarch.Children returns two picture shapes
            Assert.IsTrue(Arrays.Equals(data1, ((HSSFPicture)((HSSFPatriarch)dr).Children[(0)]).PictureData.Data));
            Assert.IsTrue(Arrays.Equals(data2, ((HSSFPicture)((HSSFPatriarch)dr).Children[(1)]).PictureData.Data));

            // Write, read back and verify that our pictures are there
            wb = HSSFTestDataSamples.WriteOutAndReadBack((HSSFWorkbook)wb);
            IList lst2 = wb.GetAllPictures();

            Assert.AreEqual(2, lst2.Count);
            Assert.IsTrue(Arrays.Equals(data1, (lst2[(0)] as HSSFPictureData).Data));
            Assert.IsTrue(Arrays.Equals(data2, (lst2[(1)] as HSSFPictureData).Data));

            // confirm that the pictures are in the Sheet's Drawing
            sh = wb.GetSheet("Pictures");
            dr = sh.CreateDrawingPatriarch();
            Assert.AreEqual(2, ((HSSFPatriarch)dr).Children.Count);
            Assert.IsTrue(Arrays.Equals(data1, ((HSSFPicture)((HSSFPatriarch)dr).Children[(0)]).PictureData.Data));
            Assert.IsTrue(Arrays.Equals(data2, ((HSSFPicture)((HSSFPatriarch)dr).Children[(1)]).PictureData.Data));

            // add a third picture
            byte[] data3 = new byte[] { 7, 8, 9 };
            // picture index must increment across Write-read
            int idx3 = wb.AddPicture(data3, PictureType.JPEG);

            Assert.AreEqual(3, idx3);
            IPicture p3 = dr.CreatePicture(anchor, idx3);

            Assert.IsTrue(Arrays.Equals(data3, ((HSSFPicture)p3).PictureData.Data));
            Assert.AreEqual(3, ((HSSFPatriarch)dr).Children.Count);
            Assert.IsTrue(Arrays.Equals(data1, ((HSSFPicture)((HSSFPatriarch)dr).Children[(0)]).PictureData.Data));
            Assert.IsTrue(Arrays.Equals(data2, ((HSSFPicture)((HSSFPatriarch)dr).Children[(1)]).PictureData.Data));
            Assert.IsTrue(Arrays.Equals(data3, ((HSSFPicture)((HSSFPatriarch)dr).Children[(2)]).PictureData.Data));

            // write and read again
            wb = HSSFTestDataSamples.WriteOutAndReadBack((HSSFWorkbook)wb);
            IList lst3 = wb.GetAllPictures();

            // all three should be there
            Assert.AreEqual(3, lst3.Count);
            Assert.IsTrue(Arrays.Equals(data1, (lst3[(0)] as HSSFPictureData).Data));
            Assert.IsTrue(Arrays.Equals(data2, (lst3[(1)] as HSSFPictureData).Data));
            Assert.IsTrue(Arrays.Equals(data3, (lst3[(2)] as HSSFPictureData).Data));

            sh = wb.GetSheet("Pictures");
            dr = sh.CreateDrawingPatriarch();
            Assert.AreEqual(3, ((HSSFPatriarch)dr).Children.Count);

            // forth picture
            byte[] data4 = new byte[] { 10, 11, 12 };
            int    idx4  = wb.AddPicture(data4, PictureType.JPEG);

            Assert.AreEqual(4, idx4);
            dr.CreatePicture(anchor, idx4);
            Assert.AreEqual(4, ((HSSFPatriarch)dr).Children.Count);
            Assert.IsTrue(Arrays.Equals(data1, ((HSSFPicture)((HSSFPatriarch)dr).Children[(0)]).PictureData.Data));
            Assert.IsTrue(Arrays.Equals(data2, ((HSSFPicture)((HSSFPatriarch)dr).Children[(1)]).PictureData.Data));
            Assert.IsTrue(Arrays.Equals(data3, ((HSSFPicture)((HSSFPatriarch)dr).Children[(2)]).PictureData.Data));
            Assert.IsTrue(Arrays.Equals(data4, ((HSSFPicture)((HSSFPatriarch)dr).Children[(3)]).PictureData.Data));

            wb = HSSFTestDataSamples.WriteOutAndReadBack((HSSFWorkbook)wb);
            IList lst4 = wb.GetAllPictures();

            Assert.AreEqual(4, lst4.Count);
            Assert.IsTrue(Arrays.Equals(data1, (lst4[(0)] as HSSFPictureData).Data));
            Assert.IsTrue(Arrays.Equals(data2, (lst4[(1)] as HSSFPictureData).Data));
            Assert.IsTrue(Arrays.Equals(data3, (lst4[(2)] as HSSFPictureData).Data));
            Assert.IsTrue(Arrays.Equals(data4, (lst4[(3)] as HSSFPictureData).Data));
            sh = wb.GetSheet("Pictures");
            dr = sh.CreateDrawingPatriarch();
            Assert.AreEqual(4, ((HSSFPatriarch)dr).Children.Count);
            Assert.IsTrue(Arrays.Equals(data1, ((HSSFPicture)((HSSFPatriarch)dr).Children[(0)]).PictureData.Data));
            Assert.IsTrue(Arrays.Equals(data2, ((HSSFPicture)((HSSFPatriarch)dr).Children[(1)]).PictureData.Data));
            Assert.IsTrue(Arrays.Equals(data3, ((HSSFPicture)((HSSFPatriarch)dr).Children[(2)]).PictureData.Data));
            Assert.IsTrue(Arrays.Equals(data4, ((HSSFPicture)((HSSFPatriarch)dr).Children[(3)]).PictureData.Data));
        }
Exemple #3
0
        public void TestIfFormulas()
        {
            HSSFWorkbook wb = new HSSFWorkbook();

            NPOI.SS.UserModel.ISheet s = wb.CreateSheet("TestSheet1");
            IRow  r = null;
            ICell c = null;

            r = s.CreateRow(0);
            c = r.CreateCell(1); c.SetCellValue(1);
            c = r.CreateCell(2); c.SetCellValue(2);
            c = r.CreateCell(3); c.CellFormula = ("MAX(A1:B1)");
            c = r.CreateCell(4); c.CellFormula = ("IF(A1=D1,\"A1\",\"B1\")");

            wb = HSSFTestDataSamples.WriteOutAndReadBack(wb);
            s  = wb.GetSheetAt(0);
            r  = s.GetRow(0);
            c  = r.GetCell(4);

            Assert.IsTrue(("IF(A1=D1,\"A1\",\"B1\")").Equals(c.CellFormula), "expected: IF(A1=D1,\"A1\",\"B1\") got " + c.CellFormula);

            wb = OpenSample("IfFormulaTest.xls");
            s  = wb.GetSheetAt(0);
            r  = s.GetRow(3);
            c  = r.GetCell(0);
            Assert.IsTrue(("IF(A3=A1,\"A1\",\"A2\")").Equals(c.CellFormula), "expected: IF(A3=A1,\"A1\",\"A2\") got " + c.CellFormula);
            //c = r.GetCell((short)1);
            //Assert.IsTrue("expected: A!A1+A!B1 got: "+c.CellFormula, ("A!A1+A!B1").Equals(c.CellFormula));


            wb = new HSSFWorkbook();
            s  = wb.CreateSheet("TestSheet1");
            r  = null;
            c  = null;
            r  = s.CreateRow(0);
            c  = r.CreateCell(0); c.CellFormula = ("IF(1=1,0,1)");

            HSSFTestDataSamples.WriteOutAndReadBack(wb);

            wb = new HSSFWorkbook();
            s  = wb.CreateSheet("TestSheet1");
            r  = null;
            c  = null;
            r  = s.CreateRow(0);
            c  = r.CreateCell(0);
            c.SetCellValue(1);

            c = r.CreateCell(1);
            c.SetCellValue(3);


            ICell formulaCell = r.CreateCell(3);

            r = s.CreateRow(1);
            c = r.CreateCell(0);
            c.SetCellValue(3);

            c = r.CreateCell(1);
            c.SetCellValue(7);

            formulaCell.CellFormula = ("IF(A1=B1,AVERAGE(A1:B1),AVERAGE(A2:B2))");

            HSSFTestDataSamples.WriteOutAndReadBack(wb);
        }
Exemple #4
0
        public void MultiSheetReferencesHSSFandXSSF()
        {
            IWorkbook[] wbs = new IWorkbook[] {
                HSSFTestDataSamples.OpenSampleWorkbook("55906-MultiSheetRefs.xls"),
                XSSFTestDataSamples.OpenSampleWorkbook("55906-MultiSheetRefs.xlsx")
            };
            foreach (IWorkbook wb in wbs)
            {
                ISheet s1 = wb.GetSheetAt(0);
                Ptg[]  ptgs;

                // Check the contents
                ICell sumF = s1.GetRow(2).GetCell(0);
                Assert.IsNotNull(sumF);
                Assert.AreEqual("SUM(Sheet1:Sheet3!A1)", sumF.CellFormula);

                ICell avgF = s1.GetRow(2).GetCell(1);
                Assert.IsNotNull(avgF);
                Assert.AreEqual("AVERAGE(Sheet1:Sheet3!A1)", avgF.CellFormula);

                ICell countAF = s1.GetRow(2).GetCell(2);
                Assert.IsNotNull(countAF);
                Assert.AreEqual("COUNTA(Sheet1:Sheet3!C1)", countAF.CellFormula);

                ICell maxF = s1.GetRow(4).GetCell(1);
                Assert.IsNotNull(maxF);
                Assert.AreEqual("MAX(Sheet1:Sheet3!A$1)", maxF.CellFormula);

                ICell sumFA = s1.GetRow(2).GetCell(7);
                Assert.IsNotNull(sumFA);
                Assert.AreEqual("SUM(Sheet1:Sheet3!A1:B2)", sumFA.CellFormula);

                ICell avgFA = s1.GetRow(2).GetCell(8);
                Assert.IsNotNull(avgFA);
                Assert.AreEqual("AVERAGE(Sheet1:Sheet3!A1:B2)", avgFA.CellFormula);

                ICell maxFA = s1.GetRow(4).GetCell(8);
                Assert.IsNotNull(maxFA);
                Assert.AreEqual("MAX(Sheet1:Sheet3!A$1:B$2)", maxFA.CellFormula);

                ICell countFA = s1.GetRow(5).GetCell(8);
                Assert.IsNotNull(countFA);
                Assert.AreEqual("COUNT(Sheet1:Sheet3!$A$1:$B$2)", countFA.CellFormula);

                // Create a formula Parser
                IFormulaParsingWorkbook fpb = null;
                if (wb is HSSFWorkbook)
                {
                    fpb = HSSFEvaluationWorkbook.Create((HSSFWorkbook)wb);
                }
                else
                {
                    fpb = XSSFEvaluationWorkbook.Create((XSSFWorkbook)wb);
                }

                // Check things parse as expected:

                // SUM to one cell over 3 workbooks, relative reference
                ptgs = Parse(fpb, "SUM(Sheet1:Sheet3!A1)");
                Assert.AreEqual(2, ptgs.Length);
                if (wb is HSSFWorkbook)
                {
                    Assert.AreEqual(typeof(Ref3DPtg), ptgs[0].GetType());
                }
                else
                {
                    Assert.AreEqual(typeof(Ref3DPxg), ptgs[0].GetType());
                }
                Assert.AreEqual("Sheet1:Sheet3!A1", ToFormulaString(ptgs[0], fpb));
                Assert.AreEqual(typeof(AttrPtg), ptgs[1].GetType());
                Assert.AreEqual("SUM", ToFormulaString(ptgs[1], fpb));

                // MAX to one cell over 3 workbooks, absolute row reference
                ptgs = Parse(fpb, "MAX(Sheet1:Sheet3!A$1)");
                Assert.AreEqual(2, ptgs.Length);
                if (wb is HSSFWorkbook)
                {
                    Assert.AreEqual(typeof(Ref3DPtg), ptgs[0].GetType());
                }
                else
                {
                    Assert.AreEqual(typeof(Ref3DPxg), ptgs[0].GetType());
                }
                Assert.AreEqual("Sheet1:Sheet3!A$1", ToFormulaString(ptgs[0], fpb));
                Assert.AreEqual(typeof(FuncVarPtg), ptgs[1].GetType());
                Assert.AreEqual("MAX", ToFormulaString(ptgs[1], fpb));

                // MIN to one cell over 3 workbooks, absolute reference
                ptgs = Parse(fpb, "MIN(Sheet1:Sheet3!$A$1)");
                Assert.AreEqual(2, ptgs.Length);
                if (wb is HSSFWorkbook)
                {
                    Assert.AreEqual(typeof(Ref3DPtg), ptgs[0].GetType());
                }
                else
                {
                    Assert.AreEqual(typeof(Ref3DPxg), ptgs[0].GetType());
                }
                Assert.AreEqual("Sheet1:Sheet3!$A$1", ToFormulaString(ptgs[0], fpb));
                Assert.AreEqual(typeof(FuncVarPtg), ptgs[1].GetType());
                Assert.AreEqual("MIN", ToFormulaString(ptgs[1], fpb));

                // SUM to a range of cells over 3 workbooks
                ptgs = Parse(fpb, "SUM(Sheet1:Sheet3!A1:B2)");
                Assert.AreEqual(2, ptgs.Length);
                if (wb is HSSFWorkbook)
                {
                    Assert.AreEqual(typeof(Area3DPtg), ptgs[0].GetType());
                }
                else
                {
                    Assert.AreEqual(typeof(Area3DPxg), ptgs[0].GetType());
                }
                Assert.AreEqual(ToFormulaString(ptgs[0], fpb), "Sheet1:Sheet3!A1:B2");
                Assert.AreEqual(typeof(AttrPtg), ptgs[1].GetType());
                Assert.AreEqual("SUM", ToFormulaString(ptgs[1], fpb));

                // MIN to a range of cells over 3 workbooks, absolute reference
                ptgs = Parse(fpb, "MIN(Sheet1:Sheet3!$A$1:$B$2)");
                Assert.AreEqual(2, ptgs.Length);
                if (wb is HSSFWorkbook)
                {
                    Assert.AreEqual(typeof(Area3DPtg), ptgs[0].GetType());
                }
                else
                {
                    Assert.AreEqual(typeof(Area3DPxg), ptgs[0].GetType());
                }
                Assert.AreEqual(ToFormulaString(ptgs[0], fpb), "Sheet1:Sheet3!$A$1:$B$2");
                Assert.AreEqual(typeof(FuncVarPtg), ptgs[1].GetType());
                Assert.AreEqual("MIN", ToFormulaString(ptgs[1], fpb));

                // Check we can round-trip - try to Set a new one to a new single cell
                ICell newF = s1.GetRow(0).CreateCell(10, CellType.Formula);
                newF.CellFormula = (/*setter*/ "SUM(Sheet2:Sheet3!A1)");
                Assert.AreEqual("SUM(Sheet2:Sheet3!A1)", newF.CellFormula);

                // Check we can round-trip - try to Set a new one to a cell range
                newF             = s1.GetRow(0).CreateCell(11, CellType.Formula);
                newF.CellFormula = (/*setter*/ "MIN(Sheet1:Sheet2!A1:B2)");
                Assert.AreEqual("MIN(Sheet1:Sheet2!A1:B2)", newF.CellFormula);
            }
        }
        public void Test55747_55324()
        {
            HSSFWorkbook         wb = new HSSFWorkbook();
            HSSFFormulaEvaluator ev = wb.GetCreationHelper().CreateFormulaEvaluator() as HSSFFormulaEvaluator;
            HSSFSheet            ws = wb.CreateSheet() as HSSFSheet;
            HSSFRow  row            = ws.CreateRow(0) as HSSFRow;
            HSSFCell cell;

            // Our test value
            cell = row.CreateCell(0) as HSSFCell;
            cell.SetCellValue("abc");
            // Lots of IF cases

            cell = row.CreateCell(1) as HSSFCell;
            cell.SetCellFormula("IF(A1<>\"\",MID(A1,1,2),\"X\")");//if(expr,func,val)

            cell = row.CreateCell(2) as HSSFCell;
            cell.SetCellFormula("IF(A1<>\"\",\"A\",\"B\")");// if(expr,val,val)

            cell = row.CreateCell(3) as HSSFCell;
            cell.SetCellFormula("IF(A1=\"\",\"X\",MID(A1,1,2))");//if(expr,val,func),

            cell = row.CreateCell(4) as HSSFCell;
            cell.SetCellFormula("IF(A1<>\"\",\"X\",MID(A1,1,2))");//if(expr,val,func),

            cell = row.CreateCell(5) as HSSFCell;
            cell.SetCellFormula("IF(A1=\"\",MID(A1,1,2),MID(A1,2,2))");  //if(exp,func,func)
            cell = row.CreateCell(6) as HSSFCell;
            cell.SetCellFormula("IF(A1<>\"\",MID(A1,1,2),MID(A1,2,2))"); //if(exp,func,func)

            cell = row.CreateCell(7) as HSSFCell;
            cell.SetCellFormula("IF(MID(A1,1,2)<>\"\",\"A\",\"B\")");//if(func_expr,val,val)

            // And some MID ones just to check
            row  = ws.CreateRow(1) as HSSFRow;
            cell = row.CreateCell(1) as HSSFCell;
            cell.SetCellFormula("MID(A1,1,2)");
            cell = row.CreateCell(2) as HSSFCell;
            cell.SetCellFormula("MID(A1,2,2)");
            cell = row.CreateCell(3) as HSSFCell;
            cell.SetCellFormula("MID(A1,2,1)");
            cell = row.CreateCell(4) as HSSFCell;
            cell.SetCellFormula("MID(A1,3,1)");

            // Evaluate
            ev.EvaluateAll();

            // Save and re-load
            wb = HSSFTestDataSamples.WriteOutAndReadBack(wb) as HSSFWorkbook;
            ws = wb.GetSheetAt(0) as HSSFSheet;

            // Check the MID Ptgs in Row 2 have V RefPtgs for A1
            row = ws.GetRow(1) as HSSFRow;
            for (int i = 1; i <= 4; i++)
            {
                cell = row.GetCell(i) as HSSFCell;
                Ptg[] ptgs = getPtgs(cell);
                Assert.AreEqual(4, ptgs.Length);
                Assert.AreEqual(typeof(FuncPtg), ptgs[3].GetType());
                Assert.AreEqual("MID", ((FuncPtg)ptgs[3]).Name);
                assertRefPtgA1('V', ptgs, 0);
            }

            // Now check the IF formulas
            row = ws.GetRow(0) as HSSFRow;

            // H1, MID is used in the expression IF checks, so A1 should be V
            cell = row.GetCell(CellReference.ConvertColStringToIndex("H")) as HSSFCell;
            assertRefPtgA1('V', getPtgs(cell), 0);

            // E1, MID is used in the FALSE route, so A1 should be V
            //  A1 should be V in the IF check
            //  A1 should be R in the FALSE route
            cell = row.GetCell(CellReference.ConvertColStringToIndex("E")) as HSSFCell;
            assertRefPtgA1('V', getPtgs(cell), 0);
            assertRefPtgA1('R', getPtgs(cell), 6);

            // Check that, for B1, D1, F1 and G1, the references to A1
            //  from all of IF check, True and False are V
            cell = row.GetCell(CellReference.ConvertColStringToIndex("B")) as HSSFCell;
            assertRefPtgA1('V', getPtgs(cell), 0);
            //      assertRefPtgA1('V', getPtgs(cell), 4); // FIXME!

            cell = row.GetCell(CellReference.ConvertColStringToIndex("D")) as HSSFCell;
            assertRefPtgA1('V', getPtgs(cell), 0);
            //      assertRefPtgA1('V', getPtgs(cell), 6); // FIXME!

            cell = row.GetCell(CellReference.ConvertColStringToIndex("F")) as HSSFCell;
            assertRefPtgA1('V', getPtgs(cell), 0);
            //      assertRefPtgA1('V', getPtgs(cell), 4); // FIXME!
            //      assertRefPtgA1('V', getPtgs(cell), 9); // FIXME!

            cell = row.GetCell(CellReference.ConvertColStringToIndex("G")) as HSSFCell;
            assertRefPtgA1('V', getPtgs(cell), 0);
            //      assertRefPtgA1('V', getPtgs(cell), 4); // FIXME!
            //      assertRefPtgA1('V', getPtgs(cell), 9); // FIXME!

            // Check our cached values were correctly evaluated
            cell = row.GetCell(CellReference.ConvertColStringToIndex("A")) as HSSFCell;
            Assert.AreEqual("abc", cell.StringCellValue);
            cell = row.GetCell(CellReference.ConvertColStringToIndex("B")) as HSSFCell;
            Assert.AreEqual("ab", cell.StringCellValue);
            cell = row.GetCell(CellReference.ConvertColStringToIndex("C")) as HSSFCell;
            Assert.AreEqual("A", cell.StringCellValue);
            cell = row.GetCell(CellReference.ConvertColStringToIndex("D")) as HSSFCell;
            Assert.AreEqual("ab", cell.StringCellValue);
            cell = row.GetCell(CellReference.ConvertColStringToIndex("E")) as HSSFCell;
            Assert.AreEqual("X", cell.StringCellValue);
            cell = row.GetCell(CellReference.ConvertColStringToIndex("F")) as HSSFCell;
            Assert.AreEqual("bc", cell.StringCellValue);
            cell = row.GetCell(CellReference.ConvertColStringToIndex("G")) as HSSFCell;
            Assert.AreEqual("ab", cell.StringCellValue);
            cell = row.GetCell(CellReference.ConvertColStringToIndex("H")) as HSSFCell;
            Assert.AreEqual("A", cell.StringCellValue);

            // Enable this to write out + check in Excel
            if (OUTPUT_TEST_FILES)
            {
                FileStream out1 = new FileStream("/tmp/test.xls", FileMode.Create, FileAccess.ReadWrite);
                wb.Write(out1);
                out1.Close();
            }
        }
 private static Stream OpenSampleStream(String sampleFileName)
 {
     return(HSSFTestDataSamples.OpenSampleFileStream(sampleFileName));
 }
Exemple #7
0
        public void TestRemoveShapes()
        {
            HSSFWorkbook  wb        = new HSSFWorkbook();
            HSSFSheet     sheet     = wb.CreateSheet() as HSSFSheet;
            HSSFPatriarch patriarch = sheet.CreateDrawingPatriarch() as HSSFPatriarch;

            HSSFSimpleShape rectangle = patriarch.CreateSimpleShape(new HSSFClientAnchor());

            rectangle.ShapeType = HSSFSimpleShape.OBJECT_TYPE_RECTANGLE;

            int idx = wb.AddPicture(new byte[] { 1, 2, 3 }, PictureType.JPEG);

            patriarch.CreatePicture(new HSSFClientAnchor(), idx);

            patriarch.CreateCellComment(new HSSFClientAnchor());

            HSSFPolygon polygon = patriarch.CreatePolygon(new HSSFClientAnchor());

            polygon.SetPoints(new int[] { 1, 2 }, new int[] { 2, 3 });

            patriarch.CreateTextbox(new HSSFClientAnchor());

            HSSFShapeGroup group = patriarch.CreateGroup(new HSSFClientAnchor());

            group.CreateTextbox(new HSSFChildAnchor());
            group.CreatePicture(new HSSFChildAnchor(), idx);

            Assert.AreEqual(patriarch.Children.Count, 6);
            Assert.AreEqual(group.Children.Count, 2);

            Assert.AreEqual(HSSFTestHelper.GetEscherAggregate(patriarch).GetShapeToObjMapping().Count, 12);
            Assert.AreEqual(HSSFTestHelper.GetEscherAggregate(patriarch).TailRecords.Count, 1);

            wb        = HSSFTestDataSamples.WriteOutAndReadBack(wb);
            sheet     = wb.GetSheetAt(0) as HSSFSheet;
            patriarch = sheet.DrawingPatriarch as HSSFPatriarch;

            Assert.AreEqual(HSSFTestHelper.GetEscherAggregate(patriarch).GetShapeToObjMapping().Count, 12);
            Assert.AreEqual(HSSFTestHelper.GetEscherAggregate(patriarch).TailRecords.Count, 1);

            Assert.AreEqual(patriarch.Children.Count, 6);

            group = (HSSFShapeGroup)patriarch.Children[5];
            group.RemoveShape(group.Children[0]);

            Assert.AreEqual(HSSFTestHelper.GetEscherAggregate(patriarch).GetShapeToObjMapping().Count, 10);
            Assert.AreEqual(HSSFTestHelper.GetEscherAggregate(patriarch).TailRecords.Count, 1);

            wb        = HSSFTestDataSamples.WriteOutAndReadBack(wb);
            sheet     = wb.GetSheetAt(0) as HSSFSheet;
            patriarch = sheet.DrawingPatriarch as HSSFPatriarch;

            Assert.AreEqual(HSSFTestHelper.GetEscherAggregate(patriarch).GetShapeToObjMapping().Count, 10);
            Assert.AreEqual(HSSFTestHelper.GetEscherAggregate(patriarch).TailRecords.Count, 1);

            group = (HSSFShapeGroup)patriarch.Children[(5)];
            patriarch.RemoveShape(group);

            Assert.AreEqual(HSSFTestHelper.GetEscherAggregate(patriarch).GetShapeToObjMapping().Count, 8);
            Assert.AreEqual(HSSFTestHelper.GetEscherAggregate(patriarch).TailRecords.Count, 1);

            wb        = HSSFTestDataSamples.WriteOutAndReadBack(wb);
            sheet     = wb.GetSheetAt(0) as HSSFSheet;
            patriarch = sheet.DrawingPatriarch as HSSFPatriarch;

            Assert.AreEqual(HSSFTestHelper.GetEscherAggregate(patriarch).GetShapeToObjMapping().Count, 8);
            Assert.AreEqual(HSSFTestHelper.GetEscherAggregate(patriarch).TailRecords.Count, 1);
            Assert.AreEqual(patriarch.Children.Count, 5);

            HSSFShape shape = patriarch.Children[0];

            patriarch.RemoveShape(shape);

            Assert.AreEqual(HSSFTestHelper.GetEscherAggregate(patriarch).GetShapeToObjMapping().Count, 6);
            Assert.AreEqual(HSSFTestHelper.GetEscherAggregate(patriarch).TailRecords.Count, 1);
            Assert.AreEqual(patriarch.Children.Count, 4);

            wb        = HSSFTestDataSamples.WriteOutAndReadBack(wb);
            sheet     = wb.GetSheetAt(0) as HSSFSheet;
            patriarch = sheet.DrawingPatriarch as HSSFPatriarch;

            Assert.AreEqual(HSSFTestHelper.GetEscherAggregate(patriarch).GetShapeToObjMapping().Count, 6);
            Assert.AreEqual(HSSFTestHelper.GetEscherAggregate(patriarch).TailRecords.Count, 1);
            Assert.AreEqual(patriarch.Children.Count, 4);

            HSSFPicture picture = (HSSFPicture)patriarch.Children[0];

            patriarch.RemoveShape(picture);

            Assert.AreEqual(HSSFTestHelper.GetEscherAggregate(patriarch).GetShapeToObjMapping().Count, 5);
            Assert.AreEqual(HSSFTestHelper.GetEscherAggregate(patriarch).TailRecords.Count, 1);
            Assert.AreEqual(patriarch.Children.Count, 3);

            wb        = HSSFTestDataSamples.WriteOutAndReadBack(wb);
            sheet     = wb.GetSheetAt(0) as HSSFSheet;
            patriarch = sheet.DrawingPatriarch as HSSFPatriarch;

            Assert.AreEqual(HSSFTestHelper.GetEscherAggregate(patriarch).GetShapeToObjMapping().Count, 5);
            Assert.AreEqual(HSSFTestHelper.GetEscherAggregate(patriarch).TailRecords.Count, 1);
            Assert.AreEqual(patriarch.Children.Count, 3);

            HSSFComment comment = (HSSFComment)patriarch.Children[0];

            patriarch.RemoveShape(comment);

            Assert.AreEqual(HSSFTestHelper.GetEscherAggregate(patriarch).GetShapeToObjMapping().Count, 3);
            Assert.AreEqual(HSSFTestHelper.GetEscherAggregate(patriarch).TailRecords.Count, 0);
            Assert.AreEqual(patriarch.Children.Count, 2);

            wb        = HSSFTestDataSamples.WriteOutAndReadBack(wb);
            sheet     = wb.GetSheetAt(0) as HSSFSheet;
            patriarch = sheet.DrawingPatriarch as HSSFPatriarch;

            Assert.AreEqual(HSSFTestHelper.GetEscherAggregate(patriarch).GetShapeToObjMapping().Count, 3);
            Assert.AreEqual(HSSFTestHelper.GetEscherAggregate(patriarch).TailRecords.Count, 0);
            Assert.AreEqual(patriarch.Children.Count, 2);

            polygon = (HSSFPolygon)patriarch.Children[0];
            patriarch.RemoveShape(polygon);

            Assert.AreEqual(HSSFTestHelper.GetEscherAggregate(patriarch).GetShapeToObjMapping().Count, 2);
            Assert.AreEqual(HSSFTestHelper.GetEscherAggregate(patriarch).TailRecords.Count, 0);
            Assert.AreEqual(patriarch.Children.Count, 1);

            wb        = HSSFTestDataSamples.WriteOutAndReadBack(wb);
            sheet     = wb.GetSheetAt(0) as HSSFSheet;
            patriarch = sheet.DrawingPatriarch as HSSFPatriarch;

            Assert.AreEqual(HSSFTestHelper.GetEscherAggregate(patriarch).GetShapeToObjMapping().Count, 2);
            Assert.AreEqual(HSSFTestHelper.GetEscherAggregate(patriarch).TailRecords.Count, 0);
            Assert.AreEqual(patriarch.Children.Count, 1);

            HSSFTextbox textbox = (HSSFTextbox)patriarch.Children[0];

            patriarch.RemoveShape(textbox);

            Assert.AreEqual(HSSFTestHelper.GetEscherAggregate(patriarch).GetShapeToObjMapping().Count, 0);
            Assert.AreEqual(HSSFTestHelper.GetEscherAggregate(patriarch).TailRecords.Count, 0);
            Assert.AreEqual(patriarch.Children.Count, 0);

            wb        = HSSFTestDataSamples.WriteOutAndReadBack(wb);
            sheet     = wb.GetSheetAt(0) as HSSFSheet;
            patriarch = sheet.DrawingPatriarch as HSSFPatriarch;

            Assert.AreEqual(HSSFTestHelper.GetEscherAggregate(patriarch).GetShapeToObjMapping().Count, 0);
            Assert.AreEqual(HSSFTestHelper.GetEscherAggregate(patriarch).TailRecords.Count, 0);
            Assert.AreEqual(patriarch.Children.Count, 0);
        }
Exemple #8
0
 public static OPCPackage OpenSamplePackage(String sampleName)
 {
     return(OPCPackage.Open(
                HSSFTestDataSamples.OpenSampleFileStream(sampleName)
                ));
 }
Exemple #9
0
        public static XSSFWorkbook OpenSampleWorkbook(String sampleName)
        {
            Stream is1 = HSSFTestDataSamples.OpenSampleFileStream(sampleName);

            return(new XSSFWorkbook(is1));
        }
Exemple #10
0
 /**
  * Loads a workbook from the given filename in the Test data dir.
  *
  * @param sampleFileName the filename.
  * @return the loaded workbook.
  */
 protected static HSSFWorkbook LoadWorkbook(String sampleFileName)
 {
     return(HSSFTestDataSamples.OpenSampleWorkbook(sampleFileName));
 }
Exemple #11
0
 public static FileInfo GetSampleFile(String sampleFileName)
 {
     return(HSSFTestDataSamples.GetSampleFile(sampleFileName));
 }
Exemple #12
0
        public new void TestColumnWidth()
        {
            //check we can correctly read column widths from a reference workbook
            IWorkbook wb = HSSFTestDataSamples.OpenSampleWorkbook("colwidth.xls");

            //reference values
            int[] ref1 = { 365, 548, 731, 914, 1097, 1280, 1462, 1645, 1828, 2011, 2194, 2377, 2560, 2742, 2925, 3108, 3291, 3474, 3657 };

            ISheet sh = wb.GetSheetAt(0);

            for (char i = 'A'; i <= 'S'; i++)
            {
                int idx = i - 'A';
                int w   = sh.GetColumnWidth(idx);
                Assert.AreEqual(ref1[idx], w);
            }

            //the second sheet doesn't have overridden column widths
            sh = wb.GetSheetAt(1);
            int def_width = sh.DefaultColumnWidth;

            for (char i = 'A'; i <= 'S'; i++)
            {
                int idx = i - 'A';
                int w   = sh.GetColumnWidth(idx);
                //getDefaultColumnWidth returns width measured in characters
                //getColumnWidth returns width measured in 1/256th units
                Assert.AreEqual(def_width * 256, w);
            }

            //test new workbook
            wb = new HSSFWorkbook();
            sh = wb.CreateSheet();
            sh.DefaultColumnWidth = (/*setter*/ 10);
            Assert.AreEqual(10, sh.DefaultColumnWidth);
            Assert.AreEqual(256 * 10, sh.GetColumnWidth(0));
            Assert.AreEqual(256 * 10, sh.GetColumnWidth(1));
            Assert.AreEqual(256 * 10, sh.GetColumnWidth(2));
            for (char i = 'D'; i <= 'F'; i++)
            {
                short w = (256 * 12);
                sh.SetColumnWidth(i, w);
                Assert.AreEqual(w, sh.GetColumnWidth(i));
            }

            //serialize and read again
            wb = HSSFTestDataSamples.WriteOutAndReadBack((HSSFWorkbook)wb);

            sh = wb.GetSheetAt(0);
            Assert.AreEqual(10, sh.DefaultColumnWidth);
            //columns A-C have default width
            Assert.AreEqual(256 * 10, sh.GetColumnWidth(0));
            Assert.AreEqual(256 * 10, sh.GetColumnWidth(1));
            Assert.AreEqual(256 * 10, sh.GetColumnWidth(2));
            //columns D-F have custom width
            for (char i = 'D'; i <= 'F'; i++)
            {
                short w = (256 * 12);
                Assert.AreEqual(w, sh.GetColumnWidth(i));
            }

            // check for 16-bit signed/unsigned error:
            sh.SetColumnWidth(0, 40000);
            Assert.AreEqual(40000, sh.GetColumnWidth(0));
        }
Exemple #13
0
        public void TestForceRecalculation()
        {
            IWorkbook workbook = HSSFTestDataSamples.OpenSampleWorkbook("UncalcedRecord.xls");

            ISheet sheet  = workbook.GetSheetAt(0);
            ISheet sheet2 = workbook.GetSheetAt(0);
            IRow   row    = sheet.GetRow(0);

            row.CreateCell(0).SetCellValue(5);
            row.CreateCell(1).SetCellValue(8);
            Assert.IsFalse(sheet.ForceFormulaRecalculation);
            Assert.IsFalse(sheet2.ForceFormulaRecalculation);

            // Save and manually verify that on column C we have 0, value in template
            FileInfo   tempFile = TempFile.CreateTempFile("uncalced_err", ".xls");
            FileStream fout     = new FileStream(tempFile.FullName, FileMode.OpenOrCreate);

            workbook.Write(fout);
            fout.Close();
            sheet.ForceFormulaRecalculation = (/*setter*/ true);
            Assert.IsTrue(sheet.ForceFormulaRecalculation);

            // Save and manually verify that on column C we have now 13, calculated value
            tempFile = TempFile.CreateTempFile("uncalced_succ", ".xls");
            tempFile.Delete();
            fout = new FileStream(tempFile.FullName, FileMode.OpenOrCreate);
            workbook.Write(fout);
            fout.Close();

            // Try it can be opened
            IWorkbook wb2 = new HSSFWorkbook(new FileStream(tempFile.FullName, FileMode.Open));

            // And check correct sheet Settings found
            sheet  = wb2.GetSheetAt(0);
            sheet2 = wb2.GetSheetAt(1);
            Assert.IsTrue(sheet.ForceFormulaRecalculation);
            Assert.IsFalse(sheet2.ForceFormulaRecalculation);

            // Now turn if back off again
            sheet.ForceFormulaRecalculation = (/*setter*/ false);

            fout = new FileStream(tempFile.FullName, FileMode.Open);
            wb2.Write(fout);
            fout.Close();
            wb2 = new HSSFWorkbook(new FileStream(tempFile.FullName, FileMode.Open));

            Assert.IsFalse(wb2.GetSheetAt(0).ForceFormulaRecalculation);
            Assert.IsFalse(wb2.GetSheetAt(1).ForceFormulaRecalculation);
            Assert.IsFalse(wb2.GetSheetAt(2).ForceFormulaRecalculation);

            // Now add a new sheet, and check things work
            //  with old ones unset, new one Set
            ISheet s4 = wb2.CreateSheet();

            s4.ForceFormulaRecalculation = (/*setter*/ true);

            Assert.IsFalse(sheet.ForceFormulaRecalculation);
            Assert.IsFalse(sheet2.ForceFormulaRecalculation);
            Assert.IsTrue(s4.ForceFormulaRecalculation);

            fout = new FileStream(tempFile.FullName, FileMode.Open);
            wb2.Write(fout);
            fout.Close();

            IWorkbook wb3 = new HSSFWorkbook(new FileStream(tempFile.FullName, FileMode.Open));

            Assert.IsFalse(wb3.GetSheetAt(0).ForceFormulaRecalculation);
            Assert.IsFalse(wb3.GetSheetAt(1).ForceFormulaRecalculation);
            Assert.IsFalse(wb3.GetSheetAt(2).ForceFormulaRecalculation);
            Assert.IsTrue(wb3.GetSheetAt(3).ForceFormulaRecalculation);
        }
Exemple #14
0
        public void TestShiftWithComments()
        {
            HSSFWorkbook wb = HSSFTestDataSamples.OpenSampleWorkbook("comments.xls");

            NPOI.SS.UserModel.Sheet sheet = wb.GetSheet("Sheet1");
            Assert.AreEqual(3, sheet.LastRowNum);

            // Verify comments are in the position expected
            Assert.IsNotNull(sheet.GetCellComment(0, 0));
            Assert.IsNull(sheet.GetCellComment(1, 0));
            Assert.IsNotNull(sheet.GetCellComment(2, 0));
            Assert.IsNotNull(sheet.GetCellComment(3, 0));

            String comment1 = sheet.GetCellComment(0, 0).String.String;

            Assert.AreEqual(comment1, "comment top row1 (index0)\n");
            String comment3 = sheet.GetCellComment(2, 0).String.String;

            Assert.AreEqual(comment3, "comment top row3 (index2)\n");
            String comment4 = sheet.GetCellComment(3, 0).String.String;

            Assert.AreEqual(comment4, "comment top row4 (index3)\n");

            // Shifting all but first line down to Test comments shifting
            sheet.ShiftRows(1, sheet.LastRowNum, 1, true, true);
            MemoryStream outputStream = new MemoryStream();

            wb.Write(outputStream);

            // Test that comments were shifted as expected
            Assert.AreEqual(4, sheet.LastRowNum);
            Assert.IsNotNull(sheet.GetCellComment(0, 0));
            Assert.IsNull(sheet.GetCellComment(1, 0));
            Assert.IsNull(sheet.GetCellComment(2, 0));
            Assert.IsNotNull(sheet.GetCellComment(3, 0));
            Assert.IsNotNull(sheet.GetCellComment(4, 0));

            String comment1_shifted = sheet.GetCellComment(0, 0).String.String;

            Assert.AreEqual(comment1, comment1_shifted);
            String comment3_shifted = sheet.GetCellComment(3, 0).String.String;

            Assert.AreEqual(comment3, comment3_shifted);
            String comment4_shifted = sheet.GetCellComment(4, 0).String.String;

            Assert.AreEqual(comment4, comment4_shifted);

            // Write out and read back in again
            // Ensure that the changes were persisted
            wb    = new HSSFWorkbook(new MemoryStream(outputStream.ToArray()));
            sheet = wb.GetSheet("Sheet1");
            Assert.AreEqual(4, sheet.LastRowNum);

            // Verify comments are in the position expected after the shift
            Assert.IsNotNull(sheet.GetCellComment(0, 0));
            Assert.IsNull(sheet.GetCellComment(1, 0));
            Assert.IsNull(sheet.GetCellComment(2, 0));
            Assert.IsNotNull(sheet.GetCellComment(3, 0));
            Assert.IsNotNull(sheet.GetCellComment(4, 0));

            comment1_shifted = sheet.GetCellComment(0, 0).String.String;
            Assert.AreEqual(comment1, comment1_shifted);
            comment3_shifted = sheet.GetCellComment(3, 0).String.String;
            Assert.AreEqual(comment3, comment3_shifted);
            comment4_shifted = sheet.GetCellComment(4, 0).String.String;
            Assert.AreEqual(comment4, comment4_shifted);
        }
        public void TestFormulas()
        {
            FormulaRecord[] fRecs = mockListen.GetFormulaRecords();

            // Check our formula records
            Assert.AreEqual(6, fRecs.Length);

            InternalWorkbook stubWB = listener.GetStubWorkbook();

            Assert.IsNotNull(stubWB);
            HSSFWorkbook stubHSSF = listener.GetStubHSSFWorkbook();

            Assert.IsNotNull(stubHSSF);

            // Check these stubs have the right stuff on them
            Assert.AreEqual("Sheet1", stubWB.GetSheetName(0));
            Assert.AreEqual("S2", stubWB.GetSheetName(1));
            Assert.AreEqual("Sh3", stubWB.GetSheetName(2));

            // Check we can Get the formula without breaking
            for (int i = 0; i < fRecs.Length; i++)
            {
                HSSFFormulaParser.ToFormulaString(stubHSSF, fRecs[i].ParsedExpression);
            }

            // Peer into just one formula, and check that
            //  all the ptgs give back the right things
            Ptg[] ptgs = fRecs[0].ParsedExpression;
            Assert.AreEqual(1, ptgs.Length);
            Assert.IsTrue(ptgs[0] is Ref3DPtg);

            Ref3DPtg ptg = (Ref3DPtg)ptgs[0];
            HSSFEvaluationWorkbook book = HSSFEvaluationWorkbook.Create(stubHSSF);

            Assert.AreEqual("Sheet1!A1", ptg.ToFormulaString(book));


            // Now check we Get the right formula back for
            //  a few sample ones
            FormulaRecord fr;

            // Sheet 1 A2 is on same sheet
            fr = fRecs[0];
            Assert.AreEqual(1, fr.Row);
            Assert.AreEqual(0, fr.Column);
            Assert.AreEqual("Sheet1!A1", HSSFFormulaParser.ToFormulaString(stubHSSF, fr.ParsedExpression));

            // Sheet 1 A5 is to another sheet
            fr = fRecs[3];
            Assert.AreEqual(4, fr.Row);
            Assert.AreEqual(0, fr.Column);
            Assert.AreEqual("'S2'!A1", HSSFFormulaParser.ToFormulaString(stubHSSF, fr.ParsedExpression));

            // Sheet 1 A7 is to another sheet, range
            fr = fRecs[5];
            Assert.AreEqual(6, fr.Row);
            Assert.AreEqual(0, fr.Column);
            Assert.AreEqual("SUM(Sh3!A1:A4)", HSSFFormulaParser.ToFormulaString(stubHSSF, fr.ParsedExpression));


            // Now, load via Usermodel and re-check
            HSSFWorkbook wb = HSSFTestDataSamples.OpenSampleWorkbook("3dFormulas.xls");

            Assert.AreEqual("Sheet1!A1", wb.GetSheetAt(0).GetRow(1).GetCell(0).CellFormula);
            Assert.AreEqual("SUM(Sh3!A1:A4)", wb.GetSheetAt(0).GetRow(6).GetCell(0).CellFormula);
        }
Exemple #16
0
        public void TestXRefs()
        {
            IWorkbook wb     = HSSFTestDataSamples.OpenSampleWorkbook("XRefCalc.xls");
            IWorkbook wbData = HSSFTestDataSamples.OpenSampleWorkbook("XRefCalcData.xls");
            ICell     cell;

            // VLookup on a name in another file
            cell = wb.GetSheetAt(0).GetRow(1).GetCell(2);
            Assert.AreEqual(CellType.Formula, cell.CellType);
            Assert.AreEqual(CellType.Numeric, cell.CachedFormulaResultType);
            Assert.AreEqual(12.30, cell.NumericCellValue, 0.0001);
            // WARNING - this is wrong!
            // The file name should be Showing, but bug #45970 is fixed
            //  we seem to loose it
            Assert.AreEqual("VLOOKUP(PART,COSTS,2,FALSE)", cell.CellFormula);


            // Simple reference to a name in another file
            cell = wb.GetSheetAt(0).GetRow(1).GetCell(4);
            Assert.AreEqual(CellType.Formula, cell.CellType);
            Assert.AreEqual(CellType.Numeric, cell.CachedFormulaResultType);
            Assert.AreEqual(36.90, cell.NumericCellValue, 0.0001);
            // WARNING - this is wrong!
            // The file name should be Showing, but bug #45970 is fixed
            //  we seem to loose it
            Assert.AreEqual("Cost*Markup_Cost", cell.CellFormula);


            // Evaluate the cells
            HSSFFormulaEvaluator eval = new HSSFFormulaEvaluator(wb);

            HSSFFormulaEvaluator.SetupEnvironment(
                new String[] { "XRefCalc.xls", "XRefCalcData.xls" },
                new HSSFFormulaEvaluator[] {
                eval,
                new HSSFFormulaEvaluator(wbData)
            }
                );
            eval.EvaluateFormulaCell(
                wb.GetSheetAt(0).GetRow(1).GetCell(2)
                );
            eval.EvaluateFormulaCell(
                wb.GetSheetAt(0).GetRow(1).GetCell(4)
                );


            // Re-check VLOOKUP one
            cell = wb.GetSheetAt(0).GetRow(1).GetCell(2);
            Assert.AreEqual(CellType.Formula, cell.CellType);
            Assert.AreEqual(CellType.Numeric, cell.CachedFormulaResultType);
            Assert.AreEqual(12.30, cell.NumericCellValue, 0.0001);

            // Re-check ref one
            cell = wb.GetSheetAt(0).GetRow(1).GetCell(4);
            Assert.AreEqual(CellType.Formula, cell.CellType);
            Assert.AreEqual(CellType.Numeric, cell.CachedFormulaResultType);
            Assert.AreEqual(36.90, cell.NumericCellValue, 0.0001);

            // Add a formula that refers to one of the existing external workbooks
            cell             = wb.GetSheetAt(0).GetRow(1).CreateCell(40);
            cell.CellFormula = (/*setter*/ "Cost*[XRefCalcData.xls]MarkupSheet!$B$1");

            // Check is was stored correctly
            Assert.AreEqual("Cost*[XRefCalcData.xls]MarkupSheet!$B$1", cell.CellFormula);

            // Check it Evaluates correctly
            eval.EvaluateFormulaCell(cell);
            Assert.AreEqual(24.60 * 1.8, cell.NumericCellValue);


            // Try to add a formula for a new external workbook, won't be allowed to start
            try
            {
                cell             = wb.GetSheetAt(0).GetRow(1).CreateCell(42);
                cell.CellFormula = (/*setter*/ "[alt.xls]Sheet0!$A$1");
                Assert.Fail("New workbook not linked, shouldn't be able to Add");
            }
            catch (Exception e) { }

            // Link our new workbook
            HSSFWorkbook alt = new HSSFWorkbook();

            alt.CreateSheet().CreateRow(0).CreateCell(0).SetCellValue("In another workbook");
            wb.LinkExternalWorkbook("alt.xls", alt);

            // Now add a formula that refers to our new workbook
            cell.CellFormula = (/*setter*/ "[alt.xls]Sheet0!$A$1");
            Assert.AreEqual("[alt.xls]Sheet0!$A$1", cell.CellFormula);

            // Evaluate it, without a link to that workbook
            try
            {
                eval.Evaluate(cell);
                Assert.Fail("No cached value and no link to workbook, shouldn't Evaluate");
            }
            catch (Exception e) { }

            // Add a link, check it does
            HSSFFormulaEvaluator.SetupEnvironment(
                new String[] { "XRefCalc.xls", "XRefCalcData.xls", "alt.xls" },
                new HSSFFormulaEvaluator[] {
                eval,
                new HSSFFormulaEvaluator(wbData),
                new HSSFFormulaEvaluator(alt)
            }
                );
            eval.EvaluateFormulaCell(cell);
            Assert.AreEqual("In another workbook", cell.StringCellValue);


            // Save and re-load
            wb   = HSSFTestDataSamples.WriteOutAndReadBack(wb as HSSFWorkbook);
            eval = new HSSFFormulaEvaluator(wb);
            HSSFFormulaEvaluator.SetupEnvironment(
                new String[] { "XRefCalc.xls", "XRefCalcData.xls", "alt.xls" },
                new HSSFFormulaEvaluator[] {
                eval,
                new HSSFFormulaEvaluator(wbData),
                new HSSFFormulaEvaluator(alt)
            }
                );

            // Check the one referring to the previously existing workbook behaves
            cell = wb.GetSheetAt(0).GetRow(1).GetCell(40);
            Assert.AreEqual("Cost*[XRefCalcData.xls]MarkupSheet!$B$1", cell.CellFormula);
            eval.EvaluateFormulaCell(cell);
            Assert.AreEqual(24.60 * 1.8, cell.NumericCellValue);

            // Now check the newly Added reference
            cell = wb.GetSheetAt(0).GetRow(1).GetCell(42);
            Assert.AreEqual("[alt.xls]Sheet0!$A$1", cell.CellFormula);
            eval.EvaluateFormulaCell(cell);
            Assert.AreEqual("In another workbook", cell.StringCellValue);
        }
Exemple #17
0
        public void TestWriteSheetStyle()
        {
            HSSFWorkbook wb = new HSSFWorkbook();

            NPOI.SS.UserModel.ISheet s = wb.CreateSheet();
            IRow  r   = null;
            IFont fnt = wb.CreateFont();

            NPOI.SS.UserModel.ICellStyle cs  = wb.CreateCellStyle();
            NPOI.SS.UserModel.ICellStyle cs2 = wb.CreateCellStyle();

            cs.BorderBottom        = (BorderStyle.Thin);
            cs.BorderLeft          = (BorderStyle.Thin);
            cs.BorderRight         = (BorderStyle.Thin);
            cs.BorderTop           = (BorderStyle.Thin);
            cs.FillForegroundColor = ((short)0xA);
            cs.FillPattern         = FillPatternType.SolidForeground;
            fnt.Color               = ((short)0xf);
            fnt.IsItalic            = (true);
            cs2.FillForegroundColor = ((short)0x0);
            cs2.FillPattern         = FillPatternType.SolidForeground;
            cs2.SetFont(fnt);
            for (short rownum = (short)0; rownum < 100; rownum++)
            {
                r          = s.CreateRow(rownum);
                r.RowStyle = (cs);
                r.CreateCell(0);

                rownum++;
                if (rownum >= 100)
                {
                    break;                // I feel too lazy to Check if this isreqd :-/
                }
                r          = s.CreateRow(rownum);
                r.RowStyle = (cs2);
                r.CreateCell(0);
            }
            wb = HSSFTestDataSamples.WriteOutAndReadBack(wb);

            SanityChecker sanityChecker = new SanityChecker();

            sanityChecker.CheckHSSFWorkbook(wb);
            Assert.AreEqual(99, s.LastRowNum, "LAST ROW == 99");
            Assert.AreEqual(0, s.FirstRowNum, "FIRST ROW == 0");

            s = wb.GetSheetAt(0);
            Assert.IsNotNull(s, "Sheet is not null");

            for (short rownum = (short)0; rownum < 100; rownum++)
            {
                r = s.GetRow(rownum);
                Assert.IsNotNull(r, "Row is not null");

                cs = r.RowStyle;
                Assert.AreEqual(cs.BorderBottom, BorderStyle.Thin, "Bottom Border Style for row: ");
                Assert.AreEqual(cs.BorderLeft, BorderStyle.Thin, "Left Border Style for row: ");
                Assert.AreEqual(cs.BorderRight, BorderStyle.Thin, "Right Border Style for row: ");
                Assert.AreEqual(cs.BorderTop, BorderStyle.Thin, "Top Border Style for row: ");
                Assert.AreEqual(0xA, cs.FillForegroundColor, "FillForegroundColor for row: ");
                Assert.AreEqual((short)0x1, (short)cs.FillPattern, "FillPattern for row: ");

                rownum++;
                if (rownum >= 100)
                {
                    break;                // I feel too lazy to Check if this isreqd :-/
                }
                r = s.GetRow(rownum);
                Assert.IsNotNull(r, "Row is not null");
                cs2 = r.RowStyle;
                Assert.AreEqual(cs2.FillForegroundColor, (short)0x0, "FillForegroundColor for row: ");
                Assert.AreEqual((short)cs2.FillPattern, (short)0x1, "FillPattern for row: ");
            }
        }
Exemple #18
0
        public void TestReadNaN()
        {
            HSSFWorkbook wb = HSSFTestDataSamples.OpenSampleWorkbook("49761.xls");

            Assert.IsNotNull(wb);
        }
Exemple #19
0
        /**
         * create a rectangle, save the workbook, read back and verify that all shape properties are there
         */
        public void TestReadWriteRectangle()
        {
            HSSFWorkbook wb    = new HSSFWorkbook();
            HSSFSheet    sheet = wb.CreateSheet() as HSSFSheet;

            HSSFPatriarch    drawing = sheet.CreateDrawingPatriarch() as HSSFPatriarch;
            HSSFClientAnchor anchor  = new HSSFClientAnchor(10, 10, 50, 50, (short)2, 2, (short)4, 4);

            anchor.AnchorType = (AnchorType)(2);
            Assert.AreEqual(anchor.AnchorType, 2);

            HSSFSimpleShape rectangle = drawing.CreateSimpleShape(anchor);

            rectangle.ShapeType = (HSSFSimpleShape.OBJECT_TYPE_RECTANGLE);
            rectangle.LineWidth = (10000);
            rectangle.FillColor = (777);
            Assert.AreEqual(rectangle.FillColor, 777);
            Assert.AreEqual(10000, rectangle.LineWidth);
            rectangle.LineStyle = (LineStyle)(10);
            Assert.AreEqual(10, rectangle.LineStyle);
            Assert.AreEqual(rectangle.WrapText, HSSFSimpleShape.WRAP_SQUARE);
            rectangle.LineStyleColor = (1111);
            rectangle.IsNoFill       = (true);
            rectangle.WrapText       = (HSSFSimpleShape.WRAP_NONE);
            rectangle.String         = (new HSSFRichTextString("teeeest"));
            Assert.AreEqual(rectangle.LineStyleColor, 1111);
            Assert.AreEqual(((EscherSimpleProperty)((EscherOptRecord)HSSFTestHelper.GetEscherContainer(rectangle).GetChildById(EscherOptRecord.RECORD_ID))
                             .Lookup(EscherProperties.TEXT__TEXTID)).PropertyValue, "teeeest".GetHashCode());
            Assert.AreEqual(rectangle.IsNoFill, true);
            Assert.AreEqual(rectangle.WrapText, HSSFSimpleShape.WRAP_NONE);
            Assert.AreEqual(rectangle.String.String, "teeeest");

            wb      = HSSFTestDataSamples.WriteOutAndReadBack(wb);
            sheet   = wb.GetSheetAt(0) as HSSFSheet;
            drawing = sheet.DrawingPatriarch as HSSFPatriarch;
            Assert.AreEqual(1, drawing.Children.Count);

            HSSFSimpleShape rectangle2 =
                (HSSFSimpleShape)drawing.Children[0];

            Assert.AreEqual(HSSFSimpleShape.OBJECT_TYPE_RECTANGLE,
                            rectangle2.ShapeType);
            Assert.AreEqual(10000, rectangle2.LineWidth);
            Assert.AreEqual(10, (int)rectangle2.LineStyle);
            Assert.AreEqual(anchor, rectangle2.Anchor);
            Assert.AreEqual(rectangle2.LineStyleColor, 1111);
            Assert.AreEqual(rectangle2.FillColor, 777);
            Assert.AreEqual(rectangle2.IsNoFill, true);
            Assert.AreEqual(rectangle2.String.String, "teeeest");
            Assert.AreEqual(rectangle.WrapText, HSSFSimpleShape.WRAP_NONE);

            rectangle2.FillColor      = (3333);
            rectangle2.LineStyle      = (LineStyle)(9);
            rectangle2.LineStyleColor = (4444);
            rectangle2.IsNoFill       = (false);
            rectangle2.LineWidth      = (77);
            rectangle2.Anchor.Dx1     = 2;
            rectangle2.Anchor.Dx2     = 3;
            rectangle2.Anchor.Dy1     = (4);
            rectangle2.Anchor.Dy2     = (5);
            rectangle.WrapText        = (HSSFSimpleShape.WRAP_BY_POINTS);
            rectangle2.String         = (new HSSFRichTextString("test22"));

            wb      = HSSFTestDataSamples.WriteOutAndReadBack(wb);
            sheet   = wb.GetSheetAt(0) as HSSFSheet;
            drawing = sheet.DrawingPatriarch as HSSFPatriarch;
            Assert.AreEqual(1, drawing.Children.Count);
            rectangle2 = (HSSFSimpleShape)drawing.Children[0];
            Assert.AreEqual(HSSFSimpleShape.OBJECT_TYPE_RECTANGLE, rectangle2.ShapeType);
            Assert.AreEqual(rectangle.WrapText, HSSFSimpleShape.WRAP_BY_POINTS);
            Assert.AreEqual(77, rectangle2.LineWidth);
            Assert.AreEqual(9, rectangle2.LineStyle);
            Assert.AreEqual(rectangle2.LineStyleColor, 4444);
            Assert.AreEqual(rectangle2.FillColor, 3333);
            Assert.AreEqual(rectangle2.Anchor.Dx1, 2);
            Assert.AreEqual(rectangle2.Anchor.Dx2, 3);
            Assert.AreEqual(rectangle2.Anchor.Dy1, 4);
            Assert.AreEqual(rectangle2.Anchor.Dy2, 5);
            Assert.AreEqual(rectangle2.IsNoFill, false);
            Assert.AreEqual(rectangle2.String.String, "test22");

            HSSFSimpleShape rect3 = drawing.CreateSimpleShape(new HSSFClientAnchor());

            rect3.ShapeType = (HSSFSimpleShape.OBJECT_TYPE_RECTANGLE);
            wb = HSSFTestDataSamples.WriteOutAndReadBack(wb);

            drawing = (wb.GetSheetAt(0) as HSSFSheet).DrawingPatriarch as HSSFPatriarch;
            Assert.AreEqual(drawing.Children.Count, 2);
        }
Exemple #20
0
 private static HSSFWorkbook WriteOutAndReadBack(HSSFWorkbook original)
 {
     return(HSSFTestDataSamples.WriteOutAndReadBack(original));
 }
Exemple #21
0
        private void CheckWorkbookBack(HSSFWorkbook wb)
        {
            HSSFWorkbook wbBack = HSSFTestDataSamples.WriteOutAndReadBack(wb);

            Assert.IsNotNull(wbBack);

            HSSFSheet sheetBack = wbBack.GetSheetAt(0) as HSSFSheet;

            Assert.IsNotNull(sheetBack);

            HSSFPatriarch patriarchBack = sheetBack.DrawingPatriarch as HSSFPatriarch;

            Assert.IsNotNull(patriarchBack);

            IList <HSSFShape> children = patriarchBack.Children;

            Assert.AreEqual(4, children.Count);
            HSSFShape hssfShape = children[(0)];

            Assert.IsTrue(hssfShape is HSSFSimpleShape);
            HSSFAnchor anchor = hssfShape.Anchor;

            Assert.IsTrue(anchor is HSSFClientAnchor);
            Assert.AreEqual(0, anchor.Dx1);
            Assert.AreEqual(512, anchor.Dx2);
            Assert.AreEqual(0, anchor.Dy1);
            Assert.AreEqual(100, anchor.Dy2);
            HSSFClientAnchor cAnchor = (HSSFClientAnchor)anchor;

            Assert.AreEqual(1, cAnchor.Col1);
            Assert.AreEqual(1, cAnchor.Col2);
            Assert.AreEqual(1, cAnchor.Row1);
            Assert.AreEqual(1, cAnchor.Row2);

            hssfShape = children[(1)];
            Assert.IsTrue(hssfShape is HSSFSimpleShape);
            anchor = hssfShape.Anchor;
            Assert.IsTrue(anchor is HSSFClientAnchor);
            Assert.AreEqual(512, anchor.Dx1);
            Assert.AreEqual(1023, anchor.Dx2);
            Assert.AreEqual(0, anchor.Dy1);
            Assert.AreEqual(100, anchor.Dy2);
            cAnchor = (HSSFClientAnchor)anchor;
            Assert.AreEqual(1, cAnchor.Col1);
            Assert.AreEqual(1, cAnchor.Col2);
            Assert.AreEqual(1, cAnchor.Row1);
            Assert.AreEqual(1, cAnchor.Row2);

            hssfShape = children[(2)];
            Assert.IsTrue(hssfShape is HSSFSimpleShape);
            anchor = hssfShape.Anchor;
            Assert.IsTrue(anchor is HSSFClientAnchor);
            Assert.AreEqual(0, anchor.Dx1);
            Assert.AreEqual(512, anchor.Dx2);
            Assert.AreEqual(0, anchor.Dy1);
            Assert.AreEqual(100, anchor.Dy2);
            cAnchor = (HSSFClientAnchor)anchor;
            Assert.AreEqual(2, cAnchor.Col1);
            Assert.AreEqual(2, cAnchor.Col2);
            Assert.AreEqual(2, cAnchor.Row1);
            Assert.AreEqual(2, cAnchor.Row2);

            hssfShape = children[(3)];
            Assert.IsTrue(hssfShape is HSSFSimpleShape);
            anchor = hssfShape.Anchor;
            Assert.IsTrue(anchor is HSSFClientAnchor);
            Assert.AreEqual(0, anchor.Dx1);
            Assert.AreEqual(512, anchor.Dx2);
            Assert.AreEqual(100, anchor.Dy1);
            Assert.AreEqual(200, anchor.Dy2);
            cAnchor = (HSSFClientAnchor)anchor;
            Assert.AreEqual(2, cAnchor.Col1);
            Assert.AreEqual(2, cAnchor.Col2);
            Assert.AreEqual(2, cAnchor.Row1);
            Assert.AreEqual(2, cAnchor.Row2);
        }
Exemple #22
0
 private static HSSFWorkbook WriteRead(HSSFWorkbook b)
 {
     return(HSSFTestDataSamples.WriteOutAndReadBack(b));
 }
        public void TestAddToExistingSheet()
        {

            // dvEmpty.xls is a simple one sheet workbook.  With a DataValidations header record but no 
            // DataValidations.  It's important that the example has one SHEETPROTECTION record.
            // Such a workbook can be Created in Excel (2007) by Adding datavalidation for one cell
            // and then deleting the row that Contains the cell.
            IWorkbook wb = HSSFTestDataSamples.OpenSampleWorkbook("dvEmpty.xls");
            int dvRow = 0;
            ISheet sheet = wb.GetSheetAt(0);
            IDataValidationHelper dataValidationHelper = sheet.GetDataValidationHelper();
            IDataValidationConstraint dc = dataValidationHelper.CreateintConstraint(OperatorType.EQUAL, "42", null);
            IDataValidation dv = dataValidationHelper.CreateValidation(dc, new CellRangeAddressList(dvRow, dvRow, 0, 0));

            dv.EmptyCellAllowed = (/*setter*/false);
            dv.ErrorStyle = (/*setter*/ERRORSTYLE.STOP);
            dv.ShowPromptBox = (/*setter*/true);
            dv.CreateErrorBox("Xxx", "Yyy");
            dv.SuppressDropDownArrow = (/*setter*/true);

            sheet.AddValidationData(dv);

            MemoryStream baos = new MemoryStream();
            try
            {
                wb.Write(baos);
            }
            catch (IOException e)
            {
                throw new RuntimeException(e);
            }

            byte[] wbData = baos.ToArray();

#if !HIDE_UNREACHABLE_CODE
            if (false)
            { // TODO (Jul 2008) fix EventRecordFactory to process unknown records, (and DV records for that matter)

                ERFListener erfListener = null; // new MyERFListener();
                EventRecordFactory erf = new EventRecordFactory(erfListener, null);
                try
                {
                    POIFSFileSystem fs = new POIFSFileSystem(new MemoryStream(baos.ToArray()));
                    throw new NotImplementedException("The method CreateDocumentInputStream of POIFSFileSystem is not implemented.");
                    //erf.ProcessRecords(fs.CreateDocumentInputStream("Workbook"));
                }
                catch (RecordFormatException e)
                {
                    throw new RuntimeException(e);
                }
                catch (IOException e)
                {
                    throw new RuntimeException(e);
                }
            }
            // else verify record ordering by navigating the raw bytes
#endif

            byte[] dvHeaderRecStart = { (byte)0xB2, 0x01, 0x12, 0x00, };
            int dvHeaderOffset = FindIndex(wbData, dvHeaderRecStart);
            Assert.IsTrue(dvHeaderOffset > 0);
            int nextRecIndex = dvHeaderOffset + 22;
            int nextSid
                = ((wbData[nextRecIndex + 0] << 0) & 0x00FF)
                + ((wbData[nextRecIndex + 1] << 8) & 0xFF00)
                ;
            // nextSid should be for a DVRecord.  If anything comes between the DV header record 
            // and the DV records, Excel will not be able to open the workbook without error.

            if (nextSid == 0x0867)
            {
                throw new AssertionException("Identified bug 45519");
            }
            Assert.AreEqual(DVRecord.sid, nextSid);
        }
 public void TestOpensProperly()
 {
     OPCPackage.Open(HSSFTestDataSamples.OpenSampleFileStream("sample.xlsx"));
 }
Exemple #25
0
        public void TestSetGetProperties()
        {
            HSSFWorkbook  wb        = new HSSFWorkbook();
            HSSFSheet     sh        = wb.CreateSheet() as HSSFSheet;
            HSSFPatriarch patriarch = sh.CreateDrawingPatriarch() as HSSFPatriarch;
            HSSFTextbox   textbox   = patriarch.CreateTextbox(new HSSFClientAnchor()) as HSSFTextbox;

            textbox.String = (new HSSFRichTextString("test"));
            Assert.AreEqual(textbox.String.String, "test");

            textbox.HorizontalAlignment = ((short)5);
            Assert.AreEqual(textbox.HorizontalAlignment, 5);

            textbox.VerticalAlignment = ((short)6);
            Assert.AreEqual(textbox.VerticalAlignment, (short)6);

            textbox.MarginBottom = (7);
            Assert.AreEqual(textbox.MarginBottom, 7);

            textbox.MarginLeft = (8);
            Assert.AreEqual(textbox.MarginLeft, 8);

            textbox.MarginRight = (9);
            Assert.AreEqual(textbox.MarginRight, 9);

            textbox.MarginTop = (10);
            Assert.AreEqual(textbox.MarginTop, 10);

            wb        = HSSFTestDataSamples.WriteOutAndReadBack(wb);
            sh        = wb.GetSheetAt(0) as HSSFSheet;
            patriarch = sh.DrawingPatriarch as HSSFPatriarch;
            textbox   = (HSSFTextbox)patriarch.Children[0];
            Assert.AreEqual(textbox.String.String, "test");
            Assert.AreEqual(textbox.HorizontalAlignment, 5);
            Assert.AreEqual(textbox.VerticalAlignment, (short)6);
            Assert.AreEqual(textbox.MarginBottom, 7);
            Assert.AreEqual(textbox.MarginLeft, 8);
            Assert.AreEqual(textbox.MarginRight, 9);
            Assert.AreEqual(textbox.MarginTop, 10);

            textbox.String = (new HSSFRichTextString("test1"));
            textbox.HorizontalAlignment = (HSSFTextbox.HORIZONTAL_ALIGNMENT_CENTERED);
            textbox.VerticalAlignment   = (HSSFTextbox.VERTICAL_ALIGNMENT_TOP);
            textbox.MarginBottom        = (71);
            textbox.MarginLeft          = (81);
            textbox.MarginRight         = (91);
            textbox.MarginTop           = (101);

            Assert.AreEqual(textbox.String.String, "test1");
            Assert.AreEqual(textbox.HorizontalAlignment, HSSFTextbox.HORIZONTAL_ALIGNMENT_CENTERED);
            Assert.AreEqual(textbox.VerticalAlignment, HSSFTextbox.VERTICAL_ALIGNMENT_TOP);
            Assert.AreEqual(textbox.MarginBottom, 71);
            Assert.AreEqual(textbox.MarginLeft, 81);
            Assert.AreEqual(textbox.MarginRight, 91);
            Assert.AreEqual(textbox.MarginTop, 101);

            wb        = HSSFTestDataSamples.WriteOutAndReadBack(wb);
            sh        = wb.GetSheetAt(0) as HSSFSheet;
            patriarch = sh.DrawingPatriarch as HSSFPatriarch;
            textbox   = (HSSFTextbox)patriarch.Children[0];

            Assert.AreEqual(textbox.String.String, "test1");
            Assert.AreEqual(textbox.HorizontalAlignment, HSSFTextbox.HORIZONTAL_ALIGNMENT_CENTERED);
            Assert.AreEqual(textbox.VerticalAlignment, HSSFTextbox.VERTICAL_ALIGNMENT_TOP);
            Assert.AreEqual(textbox.MarginBottom, 71);
            Assert.AreEqual(textbox.MarginLeft, 81);
            Assert.AreEqual(textbox.MarginRight, 91);
            Assert.AreEqual(textbox.MarginTop, 101);
        }
Exemple #26
0
        private static OldExcelExtractor CreateExtractor(String sampleFileName)
        {
            FileInfo file = HSSFTestDataSamples.GetSampleFile(sampleFileName);

            return(new OldExcelExtractor(file));
        }
Exemple #27
0
        private static void OperationRefTest(String operator1)
        {
            HSSFWorkbook wb = new HSSFWorkbook();

            NPOI.SS.UserModel.ISheet s = wb.CreateSheet();
            IRow  r = null;
            ICell c = null;

            //get our minimum values
            r             = s.CreateRow(0);
            c             = r.CreateCell(1);
            c.CellFormula = ("A2" + operator1 + "A3");

            for (int x = 1; x < short.MaxValue && x > 0; x = (short)(x * 2))
            {
                r = s.CreateRow(x);

                for (int y = 1; y < 256 && y > 0; y++)
                {
                    String ref1  = null;
                    String ref2  = null;
                    short  refx1 = 0;
                    short  refy1 = 0;
                    short  refx2 = 0;
                    short  refy2 = 0;
                    if (x + 50 < short.MaxValue)
                    {
                        refx1 = (short)(x + 50);
                        refx2 = (short)(x + 46);
                    }
                    else
                    {
                        refx1 = (short)(x - 4);
                        refx2 = (short)(x - 3);
                    }

                    if (y + 50 < 255)
                    {
                        refy1 = (short)(y + 50);
                        refy2 = (short)(y + 49);
                    }
                    else
                    {
                        refy1 = (short)(y - 4);
                        refy2 = (short)(y - 3);
                    }

                    c = r.GetCell(y);
                    CellReference cr = new CellReference(refx1, refy1, false, false);
                    ref1 = cr.FormatAsString();
                    cr   = new CellReference(refx2, refy2, false, false);
                    ref2 = cr.FormatAsString();

                    c             = r.CreateCell(y);
                    c.CellFormula = ("" + ref1 + operator1 + ref2);
                }
            }

            //make sure we do the maximum value of the Int operator
            if (s.LastRowNum < short.MaxValue)
            {
                r             = s.GetRow(0);
                c             = r.CreateCell(0);
                c.CellFormula = ("" + "B1" + operator1 + "IV255");
            }

            wb = HSSFTestDataSamples.WriteOutAndReadBack(wb);
            OperationalRefVerify(operator1, wb);
        }
Exemple #28
0
 public void SetUp()
 {
     wbH = HSSFTestDataSamples.OpenSampleWorkbook("TwoSheetsOneHidden.xls");
     wbU = HSSFTestDataSamples.OpenSampleWorkbook("TwoSheetsNoneHidden.xls");
 }
Exemple #29
0
 private static HSSFWorkbook OpenSample(String sampleFileName)
 {
     return(HSSFTestDataSamples.OpenSampleWorkbook(sampleFileName));
 }
Exemple #30
0
        public void TestReadFeatRecord()
        {
            HSSFWorkbook hssf =
                HSSFTestDataSamples.OpenSampleWorkbook("46136-NoWarnings.xls");
            InternalWorkbook wb = HSSFTestHelper.GetWorkbookForTest(hssf);

            FeatRecord    fr  = null;
            FeatHdrRecord fhr = null;

            Assert.AreEqual(1, hssf.NumberOfSheets);

            // First check it isn't on the Workbook
            int countFR  = 0;
            int countFRH = 0;

            foreach (Record r in wb.Records)
            {
                if (r is FeatRecord)
                {
                    fr = (FeatRecord)r;
                    countFR++;
                }
                else if (r.Sid == FeatRecord.sid)
                {
                    Assert.Fail("FeatRecord SID found but not Created correctly!");
                }
                if (r is FeatHdrRecord)
                {
                    countFRH++;
                }
                else if (r.Sid == FeatHdrRecord.sid)
                {
                    Assert.Fail("FeatHdrRecord SID found but not Created correctly!");
                }
            }

            Assert.AreEqual(0, countFR);
            Assert.AreEqual(0, countFRH);

            // Now find it on our sheet
            HSSFSheet     s     = (HSSFSheet)hssf.GetSheetAt(0);
            InternalSheet sheet = HSSFTestHelper.GetSheetForTest(s);

            foreach (RecordBase rb in sheet.Records)
            {
                if (rb is Record)
                {
                    Record r = (Record)rb;
                    if (r is FeatRecord)
                    {
                        fr = (FeatRecord)r;
                        countFR++;
                    }
                    else if (r.Sid == FeatRecord.sid)
                    {
                        countFR++;
                    }
                    if (r is FeatHdrRecord)
                    {
                        fhr = (FeatHdrRecord)r;
                        countFRH++;
                    }
                    else if (r.Sid == FeatHdrRecord.sid)
                    {
                        countFRH++;
                    }
                }
            }

            Assert.AreEqual(1, countFR);
            Assert.AreEqual(1, countFRH);
            Assert.IsNotNull(fr);
            Assert.IsNotNull(fhr);

            // Now check the contents are as expected
            Assert.AreEqual(
                FeatHdrRecord.SHAREDFEATURES_ISFFEC2,
                fr.Isf_sharedFeatureType
                );

            // Applies to one cell only
            Assert.AreEqual(1, fr.CellRefs.Length);
            Assert.AreEqual(0, fr.CellRefs[0].FirstRow);
            Assert.AreEqual(0, fr.CellRefs[0].LastRow);
            Assert.AreEqual(0, fr.CellRefs[0].FirstColumn);
            Assert.AreEqual(0, fr.CellRefs[0].LastColumn);

            // More Checking of shared features stuff
            Assert.AreEqual(4, fr.CbFeatData);
            Assert.AreEqual(4, fr.SharedFeature.DataSize);
            Assert.AreEqual(typeof(FeatFormulaErr2), fr.SharedFeature.GetType());

            FeatFormulaErr2 fferr2 = (FeatFormulaErr2)fr.SharedFeature;

            Assert.AreEqual(0x04, fferr2.RawErrorCheckValue);

            Assert.IsFalse(fferr2.CheckCalculationErrors);
            Assert.IsFalse(fferr2.CheckDateTimeFormats);
            Assert.IsFalse(fferr2.CheckEmptyCellRef);
            Assert.IsFalse(fferr2.CheckInconsistentFormulas);
            Assert.IsFalse(fferr2.CheckInconsistentRanges);
            Assert.IsTrue(fferr2.CheckNumbersAsText);
            Assert.IsFalse(fferr2.CheckUnprotectedFormulas);
            Assert.IsFalse(fferr2.PerformDataValidation);
        }