コード例 #1
0
        public void TestRenderEmptyDataReader()
        {
            var          report = new TestReport();
            IXLWorksheet ws     = report.Workbook.AddWorksheet("Test");
            IXLRange     range  = ws.Range(2, 2, 4, 2);

            range.AddToNamed("TestRange", XLScope.Worksheet);

            ws.Cell(2, 2).Value = "{Headers}";
            ws.Cell(2, 2).Style.Border.OutsideBorder      = XLBorderStyleValues.Medium;
            ws.Cell(2, 2).Style.Border.OutsideBorderColor = XLColor.Red;
            ws.Cell(2, 2).Style.Font.Bold = true;

            ws.Cell(3, 2).Value = "{Data}";
            ws.Cell(3, 2).Style.Border.OutsideBorder      = XLBorderStyleValues.Thin;
            ws.Cell(3, 2).Style.Border.OutsideBorderColor = XLColor.Black;

            ws.Cell(4, 2).Value = "{Totals}";
            ws.Cell(4, 2).Style.Border.OutsideBorder      = XLBorderStyleValues.Dotted;
            ws.Cell(4, 2).Style.Border.OutsideBorderColor = XLColor.Green;

            var panel = new ExcelDataSourceDynamicPanel("m:DataProvider:GetEmptyDataReader()", ws.NamedRange("TestRange"), report, report.TemplateProcessor);

            panel.Render();

            Assert.AreEqual(ws.Range(2, 2, 3, 7), panel.ResultRange);

            ExcelAssert.AreWorkbooksContentEquals(TestHelper.GetExpectedWorkbook(nameof(DataSourceDynamicPanelDataReaderRenderTest),
                                                                                 nameof(TestRenderEmptyDataReader)), ws.Workbook);

            //report.Workbook.SaveAs("test.xlsx");
        }
コード例 #2
0
        public void TestDynamicPanelAfterRenderEvent()
        {
            var          report = new TestReport();
            IXLWorksheet ws     = report.Workbook.AddWorksheet("Test");
            IXLRange     range  = ws.Range(2, 2, 4, 2);

            range.AddToNamed("TestRange", XLScope.Worksheet);

            ws.Cell(2, 2).Value = "{Headers}";
            ws.Cell(3, 2).Value = "{Data}";
            ws.Cell(4, 2).Value = "{Totals}";

            var panel = new ExcelDataSourceDynamicPanel("m:DataProvider:GetAllCustomersDataSet()", ws.NamedRange("TestRange"), report, report.TemplateProcessor)
            {
                AfterRenderMethodName = "TestExcelDynamicPaneAfterRender",
            };

            panel.Render();

            Assert.AreEqual(ws.Range(2, 2, 6, 7), panel.ResultRange);

            ExcelAssert.AreWorkbooksContentEquals(TestHelper.GetExpectedWorkbook(nameof(DataSourceDynamicPanelDataSetRenderTest),
                                                                                 nameof(TestDynamicPanelAfterRenderEvent)), ws.Workbook);

            //report.Workbook.SaveAs("test.xlsx");
        }
コード例 #3
0
        public void TestRender_DynamicPanel_In_DataSourcePanel_Vertical()
        {
            var          report      = new TestReport();
            IXLWorksheet ws          = report.Workbook.AddWorksheet("Test");
            IXLRange     parentRange = ws.Range(1, 2, 4, 2);

            parentRange.AddToNamed("ParentRange", XLScope.Worksheet);

            IXLRange childRange = ws.Range(2, 2, 4, 2);

            childRange.AddToNamed("ChildRange", XLScope.Worksheet);

            ws.Cell(1, 2).Value = "{di:Name}";

            ws.Cell(2, 2).Value = "{Headers}";
            ws.Cell(3, 2).Value = "{Data}";
            ws.Cell(4, 2).Value = "{Totals}";

            var parentPanel = new ExcelDataSourcePanel("m:DataProvider:GetIEnumerable()", ws.NamedRange("ParentRange"), report, report.TemplateProcessor);
            var childPanel  = new ExcelDataSourceDynamicPanel("m:DataProvider:GetChildIEnumerable(di:Name)", ws.NamedRange("ChildRange"), report, report.TemplateProcessor)
            {
                Parent = parentPanel,
            };

            parentPanel.Children = new[] { childPanel };
            parentPanel.Render();

            Assert.AreEqual(ws.Range(1, 2, 12, 3), parentPanel.ResultRange);

            ExcelAssert.AreWorkbooksContentEquals(TestHelper.GetExpectedWorkbook(nameof(DataSourceDynamicPanel_InsideDataSourcePanel_Test),
                                                                                 nameof(TestRender_DynamicPanel_In_DataSourcePanel_Vertical)), ws.Workbook);

            //report.Workbook.SaveAs("test.xlsx");
        }
コード例 #4
0
        public void TestDynamicPanelBeforeRenderEvent()
        {
            var          report = new TestReport();
            IXLWorksheet ws     = report.Workbook.AddWorksheet("Test");
            IXLRange     range  = ws.Range(2, 2, 4, 2);

            range.AddToNamed("TestRange", XLScope.Worksheet);

            ws.Cell(2, 2).Value = "{Headers}";
            ws.Cell(3, 2).Value = "{Data}";
            ws.Cell(4, 2).Value = "{Totals}";

            var panel = new ExcelDataSourceDynamicPanel("m:DataProvider:GetAllCustomersDataSet()", ws.NamedRange("TestRange"), report, report.TemplateProcessor)
            {
                BeforeRenderMethodName = "TestExcelDynamicPaneBeforeRender",
            };

            panel.Render();

            Assert.AreEqual(range, panel.ResultRange);

            Assert.AreEqual(3, ws.CellsUsed(XLCellsUsedOptions.Contents).Count());
            Assert.AreEqual("CanceledHeaders", ws.Cell(2, 2).Value);
            Assert.AreEqual("CanceledData", ws.Cell(3, 2).Value);
            Assert.AreEqual("CanceledTotals", ws.Cell(4, 2).Value);

            //report.Workbook.SaveAs("test.xlsx");
        }
        public void TestRenderDictionaryEnumerable()
        {
            var          report = new TestReport();
            IXLWorksheet ws     = report.Workbook.AddWorksheet("Test");
            IXLRange     range1 = ws.Range(2, 2, 4, 2);

            range1.AddToNamed("TestRange1", XLScope.Worksheet);

            ws.Cell(2, 2).Value = "{Headers}";
            ws.Cell(3, 2).Value = "{Data}";
            ws.Cell(4, 2).Value = "{Totals}";

            var panel1 = new ExcelDataSourceDynamicPanel("m:DataProvider:GetDictionaryEnumerable()", ws.NamedRange("TestRange1"), report, report.TemplateProcessor);

            panel1.Render();

            Assert.AreEqual(ws.Range(2, 2, 6, 4), panel1.ResultRange);

            var dictWithDecimalValues = new List <IDictionary <string, decimal> >
            {
                new Dictionary <string, decimal> {
                    ["Value"] = 25.7m
                },
                new Dictionary <string, decimal> {
                    ["Value"] = 250.7m
                },
                new Dictionary <string, decimal> {
                    ["Value"] = 2500.7m
                },
            };

            IXLRange range2 = ws.Range(7, 2, 9, 2);

            range2.AddToNamed("TestRange2", XLScope.Worksheet);

            ws.Cell(7, 2).Value = "{Headers}";
            ws.Cell(8, 2).Value = "{Data}";
            ws.Cell(9, 2).Value = "{Totals}";

            var panel2 = new ExcelDataSourceDynamicPanel(dictWithDecimalValues, ws.NamedRange("TestRange2"), report, report.TemplateProcessor);

            panel2.Render();

            Assert.AreEqual(ws.Range(7, 2, 11, 2), panel2.ResultRange);

            ExcelAssert.AreWorkbooksContentEquals(TestHelper.GetExpectedWorkbook(nameof(DataSourceDynamicPanelDictionaryRenderTest),
                                                                                 nameof(TestRenderDictionaryEnumerable)), ws.Workbook);

            //report.Workbook.SaveAs("test.xlsx");
        }
        public void TestRenderEmptyDictionary()
        {
            var          report = new TestReport();
            IXLWorksheet ws     = report.Workbook.AddWorksheet("Test");
            IXLRange     range1 = ws.Range(2, 2, 4, 2);

            range1.AddToNamed("TestRange", XLScope.Worksheet);

            ws.Cell(2, 2).Value = "{Headers}";
            ws.Cell(3, 2).Value = "{Data}";
            ws.Cell(4, 2).Value = "{Totals}";

            IXLRange range2 = ws.Range(7, 2, 9, 2);

            range2.AddToNamed("TestRange2", XLScope.Worksheet);

            ws.Cell(7, 2).Value = "{Headers}";
            ws.Cell(8, 2).Value = "{Data}";
            ws.Cell(9, 2).Value = "{Totals}";

            IDictionary <string, object> data1 = new Dictionary <string, object>();
            var panel1 = new ExcelDataSourceDynamicPanel(data1, ws.NamedRange("TestRange"), report, report.TemplateProcessor);

            panel1.Render();

            Assert.AreEqual(ws.Range(2, 2, 3, 3), panel1.ResultRange);

            IEnumerable <KeyValuePair <string, object> > data2 = new List <KeyValuePair <string, object> >();
            var panel2 = new ExcelDataSourceDynamicPanel(data2, ws.NamedRange("TestRange2"), report, report.TemplateProcessor);

            panel2.Render();

            Assert.AreEqual(ws.Range(6, 2, 7, 3), panel2.ResultRange);

            Assert.AreEqual(4, ws.CellsUsed(XLCellsUsedOptions.Contents).Count());
            Assert.AreEqual("Key", ws.Cell(2, 2).Value);
            Assert.AreEqual("Value", ws.Cell(2, 3).Value);
            Assert.AreEqual("Key", ws.Cell(6, 2).Value);
            Assert.AreEqual("Value", ws.Cell(6, 3).Value);

            //report.Workbook.SaveAs("test.xlsx");
        }
コード例 #7
0
        public void TestRenderNullItem()
        {
            var          report = new TestReport();
            IXLWorksheet ws     = report.Workbook.AddWorksheet("Test");
            IXLRange     range1 = ws.Range(2, 2, 4, 2);

            range1.AddToNamed("TestRange", XLScope.Worksheet);

            ws.Cell(2, 2).Value = "{Headers}";
            ws.Cell(3, 2).Value = "{Data}";
            ws.Cell(4, 2).Value = "{Totals}";

            var panel = new ExcelDataSourceDynamicPanel("m:DataProvider:GetNullItem()", ws.NamedRange("TestRange"), report, report.TemplateProcessor);

            panel.Render();

            Assert.IsNull(panel.ResultRange);

            Assert.AreEqual(0, ws.CellsUsed(XLCellsUsedOptions.Contents).Count());
        }
        public void TestRenderDictionary()
        {
            var          report = new TestReport();
            IXLWorksheet ws     = report.Workbook.AddWorksheet("Test");
            IXLRange     range1 = ws.Range(2, 2, 4, 2);

            range1.AddToNamed("TestRange", XLScope.Worksheet);

            ws.Cell(2, 2).Value = "{Headers}";
            ws.Cell(3, 2).Value = "{Data}";
            ws.Cell(4, 2).Value = "{Totals}";

            IXLRange range2 = ws.Range(7, 2, 9, 2);

            range2.AddToNamed("TestRange2", XLScope.Worksheet);

            ws.Cell(7, 2).Value = "{Headers}";
            ws.Cell(8, 2).Value = "{Data}";
            ws.Cell(9, 2).Value = "{Totals}";

            IDictionary <string, object> data1 = new DataProvider().GetDictionaryEnumerable().First();
            var panel1 = new ExcelDataSourceDynamicPanel(data1, ws.NamedRange("TestRange"), report, report.TemplateProcessor);

            panel1.Render();

            Assert.AreEqual(ws.Range(2, 2, 6, 3), panel1.ResultRange);

            IEnumerable <KeyValuePair <string, object> > data2 = new DataProvider().GetDictionaryEnumerable().First()
                                                                 .Select(x => new KeyValuePair <string, object>(x.Key, x.Value));
            var panel2 = new ExcelDataSourceDynamicPanel(data2, ws.NamedRange("TestRange2"), report, report.TemplateProcessor);

            panel2.Render();

            Assert.AreEqual(ws.Range(9, 2, 13, 3), panel2.ResultRange);

            ExcelAssert.AreWorkbooksContentEquals(TestHelper.GetExpectedWorkbook(nameof(DataSourceDynamicPanelDictionaryRenderTest),
                                                                                 nameof(TestRenderDictionary)), ws.Workbook);

            //report.Workbook.SaveAs("test.xlsx");
        }
コード例 #9
0
        public void TestRenderDataSetWithEvents_HorizontalPanel()
        {
            var          report = new TestReport();
            IXLWorksheet ws     = report.Workbook.AddWorksheet("Test");
            IXLRange     range  = ws.Range(2, 2, 2, 4);

            range.AddToNamed("TestRange", XLScope.Worksheet);

            ws.Cell(2, 2).Value = "{Headers}";
            ws.Cell(2, 3).Value = "{Data}";
            ws.Cell(2, 4).Value = "{Totals}";

            var panel = new ExcelDataSourceDynamicPanel("m:DataProvider:GetAllCustomersDataSet()", ws.NamedRange("TestRange"), report, report.TemplateProcessor)
            {
                BeforeHeadersRenderMethodName         = "TestExcelDynamicPanelBeforeHeadersRender",
                AfterHeadersRenderMethodName          = "TestExcelDynamicPanelAfterHeadersRender",
                BeforeDataTemplatesRenderMethodName   = "TestExcelDynamicPanelBeforeDataTemplatesRender",
                AfterDataTemplatesRenderMethodName    = "TestExcelDynamicPanelAfterDataTemplatesRender",
                BeforeDataRenderMethodName            = "TestExcelDynamicPanelBeforeDataRender",
                AfterDataRenderMethodName             = "TestExcelDynamicPanelAfterDataRender",
                BeforeDataItemRenderMethodName        = "TestExcelDynamicPanelBeforeDataItemRender",
                AfterDataItemRenderMethodName         = "TestExcelDynamicPanelAfterDataItemRender",
                BeforeTotalsTemplatesRenderMethodName = "TestExcelDynamicPanelBeforeTotalsTemplatesRender",
                AfterTotalsTemplatesRenderMethodName  = "TestExcelDynamicPanelAfterTotalsTemplatesRender",
                BeforeTotalsRenderMethodName          = "TestExcelDynamicPanelBeforeTotalsRender",
                AfterTotalsRenderMethodName           = "TestExcelDynamicPaneAfterTotalsRender",
                Type    = PanelType.Horizontal,
                GroupBy = "4",
            };

            panel.Render();

            Assert.AreEqual(ws.Range(2, 2, 8, 6), panel.ResultRange);

            ExcelAssert.AreWorkbooksContentEquals(TestHelper.GetExpectedWorkbook(nameof(DataSourceDynamicPanelDataSetRenderTest),
                                                                                 nameof(TestRenderDataSetWithEvents_HorizontalPanel)), ws.Workbook);

            // report.Workbook.SaveAs("test.xlsx");
        }
        public void TestRenderEmptyDictionaryEnumerable()
        {
            var          report = new TestReport();
            IXLWorksheet ws     = report.Workbook.AddWorksheet("Test");
            IXLRange     range  = ws.Range(2, 2, 4, 2);

            range.AddToNamed("TestRange1", XLScope.Worksheet);

            ws.Cell(2, 2).Value = "{Headers}";
            ws.Cell(3, 2).Value = "{Data}";
            ws.Cell(4, 2).Value = "{Totals}";

            var panel = new ExcelDataSourceDynamicPanel(new List <IDictionary <string, decimal> >(), ws.NamedRange("TestRange1"), report, report.TemplateProcessor);

            panel.Render();

            Assert.IsNull(panel.ResultRange);

            Assert.AreEqual(0, ws.CellsUsed(XLCellsUsedOptions.Contents).Count());

            //report.Workbook.SaveAs("test.xlsx");
        }
        public void TestRenderEmptyEnumerable()
        {
            var          report = new TestReport();
            IXLWorksheet ws     = report.Workbook.AddWorksheet("Test");
            IXLRange     range1 = ws.Range(2, 2, 4, 2);

            range1.AddToNamed("TestRange", XLScope.Worksheet);

            ws.Cell(2, 2).Value = "{Headers}";
            ws.Cell(3, 2).Value = "{Data}";
            ws.Cell(4, 2).Value = "{Totals}";

            var panel = new ExcelDataSourceDynamicPanel("m:DataProvider:GetEmptyIEnumerable()", ws.NamedRange("TestRange"), report, report.TemplateProcessor);

            panel.Render();

            Assert.AreEqual(ws.Range(2, 2, 3, 5), panel.ResultRange);

            ExcelAssert.AreWorkbooksContentEquals(TestHelper.GetExpectedWorkbook(nameof(DataSourceDynamicPanelEnumerableRenderTest),
                                                                                 nameof(TestRenderEmptyEnumerable)), ws.Workbook);

            //report.Workbook.SaveAs("test.xlsx");
        }
コード例 #12
0
        public void TestMakePanelsHierarchy()
        {
            var          wb = new XLWorkbook();
            IXLWorksheet ws = wb.AddWorksheet("Test");

            IXLRange panel1Range = ws.Range(1, 1, 4, 4);
            IXLRange panel2Range = ws.Range(1, 1, 2, 4);

            panel2Range.AddToNamed("Panel2", XLScope.Worksheet);
            IXLRange panel3Range = ws.Range(2, 1, 2, 4);

            panel3Range.AddToNamed("Panel3", XLScope.Workbook);
            IXLRange panel4Range = ws.Range(5, 1, 6, 5);
            IXLRange panel5Range = ws.Range(6, 1, 6, 5);

            panel5Range.AddToNamed("Panel5", XLScope.Worksheet);
            IXLRange panel6Range = ws.Range(3, 1, 4, 4);
            IXLRange panel7Range = ws.Range(10, 10, 10, 10);
            IXLRange panel8Range = ws.Range(8, 9, 9, 10);

            panel8Range.AddToNamed("Panel8", XLScope.Worksheet);

            var panel1 = new ExcelPanel(panel1Range, new object(), Substitute.For <ITemplateProcessor>());
            var panel2 = new ExcelDataSourcePanel("Stub", ws.NamedRange("Panel2"), new object(),
                                                  Substitute.For <ITemplateProcessor>());
            var panel3 = new ExcelDataSourcePanel("Stub", wb.NamedRange("Panel3"), new object(),
                                                  Substitute.For <ITemplateProcessor>());
            var panel4 = new ExcelPanel(panel4Range, new object(), Substitute.For <ITemplateProcessor>());
            var panel5 = new ExcelDataSourceDynamicPanel("Stub", ws.NamedRange("Panel5"), new object(),
                                                         Substitute.For <ITemplateProcessor>());
            var panel6 = new ExcelPanel(panel6Range, new object(), Substitute.For <ITemplateProcessor>());
            var panel7 = new ExcelPanel(panel7Range, new object(), Substitute.For <ITemplateProcessor>());
            var panel8 = new ExcelTotalsPanel("Stub", ws.NamedRange("Panel8"), new object(),
                                              Substitute.For <ITemplateProcessor>());

            IDictionary <string, (IExcelPanel, string)> panelsFlatView = new Dictionary <string, (IExcelPanel, string)>
            {
コード例 #13
0
        public void TestCopyIfDataIsSet()
        {
            var          wb                = new XLWorkbook();
            IXLWorksheet ws                = wb.AddWorksheet("Test");
            var          excelReport       = Substitute.For <object>();
            var          templateProcessor = Substitute.For <ITemplateProcessor>();

            IXLRange range = ws.Range(1, 1, 2, 4);

            range.AddToNamed("DataPanel", XLScope.Worksheet);
            IXLNamedRange namedRange = ws.NamedRange("DataPanel");

            object[] data  = { 1, "One" };
            var      panel = new ExcelDataSourceDynamicPanel(data, namedRange, excelReport, templateProcessor)
            {
                RenderPriority                        = 10,
                Type                                  = PanelType.Horizontal,
                ShiftType                             = ShiftType.NoShift,
                BeforeRenderMethodName                = "BeforeRenderMethod",
                AfterRenderMethodName                 = "AfterRenderMethod",
                BeforeDataItemRenderMethodName        = "BeforeDataItemRenderMethodName",
                AfterDataItemRenderMethodName         = "AfterDataItemRenderMethodName",
                GroupBy                               = "2,4",
                AfterDataRenderMethodName             = "AfterDataRenderMethodName",
                AfterDataTemplatesRenderMethodName    = "AfterDataTemplatesRenderMethodName",
                AfterHeadersRenderMethodName          = "AfterHeadersRenderMethodName",
                AfterNumbersRenderMethodName          = "AfterNumbersRenderMethodName",
                AfterTotalsRenderMethodName           = "AfterTotalsRenderMethodName",
                AfterTotalsTemplatesRenderMethodName  = "AfterTotalsTemplatesRenderMethodName",
                BeforeDataRenderMethodName            = "BeforeDataRenderMethodName",
                BeforeDataTemplatesRenderMethodName   = "BeforeDataTemplatesRenderMethodName",
                BeforeHeadersRenderMethodName         = "BeforeHeadersRenderMethodName",
                BeforeNumbersRenderMethodName         = "BeforeNumbersRenderMethodName",
                BeforeTotalsRenderMethodName          = "BeforeTotalsRenderMethodName",
                BeforeTotalsTemplatesRenderMethodName = "BeforeTotalsTemplatesRenderMethodName",
            };

            ExcelDataSourceDynamicPanel copiedPanel = (ExcelDataSourceDynamicPanel)panel.Copy(ws.Cell(5, 5));

            Assert.AreSame(excelReport, copiedPanel.GetType().GetField("_report", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(copiedPanel));
            Assert.AreSame(templateProcessor, copiedPanel.GetType().GetField("_templateProcessor", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(copiedPanel));
            Assert.IsNull(copiedPanel.GetType().GetField("_dataSourceTemplate", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(copiedPanel));
            Assert.AreSame(data, copiedPanel.GetType().GetField("_data", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(copiedPanel));
            Assert.AreEqual(ws.Cell(5, 5), copiedPanel.Range.FirstCell());
            Assert.AreEqual(ws.Cell(6, 8), copiedPanel.Range.LastCell());
            Assert.AreEqual(10, copiedPanel.RenderPriority);
            Assert.AreEqual(PanelType.Horizontal, copiedPanel.Type);
            Assert.AreEqual(ShiftType.NoShift, copiedPanel.ShiftType);
            Assert.AreEqual("BeforeRenderMethod", copiedPanel.BeforeRenderMethodName);
            Assert.AreEqual("AfterRenderMethod", copiedPanel.AfterRenderMethodName);
            Assert.AreEqual("BeforeDataItemRenderMethodName", copiedPanel.BeforeDataItemRenderMethodName);
            Assert.AreEqual("AfterDataItemRenderMethodName", copiedPanel.AfterDataItemRenderMethodName);
            Assert.AreEqual("2,4", copiedPanel.GroupBy);
            Assert.AreEqual("AfterDataRenderMethodName", copiedPanel.AfterDataRenderMethodName);
            Assert.AreEqual("AfterDataTemplatesRenderMethodName", copiedPanel.AfterDataTemplatesRenderMethodName);
            Assert.AreEqual("AfterHeadersRenderMethodName", copiedPanel.AfterHeadersRenderMethodName);
            Assert.AreEqual("AfterNumbersRenderMethodName", copiedPanel.AfterNumbersRenderMethodName);
            Assert.AreEqual("AfterTotalsRenderMethodName", copiedPanel.AfterTotalsRenderMethodName);
            Assert.AreEqual("AfterTotalsTemplatesRenderMethodName", copiedPanel.AfterTotalsTemplatesRenderMethodName);
            Assert.AreEqual("BeforeDataRenderMethodName", copiedPanel.BeforeDataRenderMethodName);
            Assert.AreEqual("BeforeDataTemplatesRenderMethodName", copiedPanel.BeforeDataTemplatesRenderMethodName);
            Assert.AreEqual("BeforeHeadersRenderMethodName", copiedPanel.BeforeHeadersRenderMethodName);
            Assert.AreEqual("BeforeNumbersRenderMethodName", copiedPanel.BeforeNumbersRenderMethodName);
            Assert.AreEqual("BeforeTotalsRenderMethodName", copiedPanel.BeforeTotalsRenderMethodName);
            Assert.AreEqual("BeforeTotalsTemplatesRenderMethodName", copiedPanel.BeforeTotalsTemplatesRenderMethodName);
            Assert.IsNull(copiedPanel.Parent);

            //wb.SaveAs("test.xlsx");
        }