|  | using System; | 
|  | using System.Drawing; | 
|  | using System.IO; | 
|  | using System.Xml; | 
|  | using EPPlusTest.Properties; | 
|  | using Microsoft.VisualStudio.TestTools.UnitTesting; | 
|  | using OfficeOpenXml; | 
|  | using OfficeOpenXml.Drawing; | 
|  | using OfficeOpenXml.Drawing.Chart; | 
|  | using OfficeOpenXml.Style; | 
|  |  | 
|  | namespace EPPlusTest | 
|  | { | 
|  | /// <summary> | 
|  | /// Summary description for UnitTest1 | 
|  | /// </summary> | 
|  | [TestClass] | 
|  | public class DrawingTest : TestBase | 
|  | { | 
|  | [TestMethod] | 
|  | public void RunDrawingTests() | 
|  | { | 
|  | BarChart(); | 
|  | Column(); | 
|  | Cone(); | 
|  | Dougnut(); | 
|  | Drawings(); | 
|  | Line(); | 
|  | LineMarker(); | 
|  | PieChart(); | 
|  | PieChart3D(); | 
|  | Pyramid(); | 
|  | Scatter(); | 
|  | Bubble(); | 
|  | Radar(); | 
|  | Surface(); | 
|  | Line2Test(); | 
|  | MultiChartSeries(); | 
|  | DrawingSizingAndPositioning(); | 
|  | DeleteDrawing(); | 
|  |  | 
|  | SaveWorksheet("Drawing.xlsx"); | 
|  |  | 
|  | ReadDocument(); | 
|  | ReadDrawing(); | 
|  | } | 
|  | //[TestMethod] | 
|  | //[Ignore] | 
|  | public void ReadDrawing() | 
|  | { | 
|  | using (ExcelPackage pck = new ExcelPackage(new FileInfo(_worksheetPath + @"Drawing.xlsx"))) | 
|  | { | 
|  | var ws = pck.Workbook.Worksheets["Pyramid"]; | 
|  | Assert.AreEqual(ws.Cells["V24"].Value, 104D); | 
|  | ws = pck.Workbook.Worksheets["Scatter"]; | 
|  | var cht = ws.Drawings["ScatterChart1"] as ExcelScatterChart; | 
|  | Assert.AreEqual(cht.Title.Text, "Header  Text"); | 
|  | cht.Title.Text = "Test"; | 
|  | Assert.AreEqual(cht.Title.Text, "Test"); | 
|  | } | 
|  | } | 
|  |  | 
|  | [TestMethod] | 
|  | public void Picture() | 
|  | { | 
|  | var ws = _pck.Workbook.Worksheets.Add("Picture"); | 
|  | var pic = ws.Drawings.AddPicture("Pic1", Resources.Test1); | 
|  |  | 
|  | pic = ws.Drawings.AddPicture("Pic2", Resources.Test1); | 
|  | pic.SetPosition(150, 200); | 
|  | pic.Border.LineStyle = eLineStyle.Solid; | 
|  | pic.Border.Fill.Color = Color.DarkCyan; | 
|  | pic.Fill.Style = eFillStyle.SolidFill; | 
|  | pic.Fill.Color = Color.White; | 
|  | pic.Fill.Transparancy = 50; | 
|  |  | 
|  | pic = ws.Drawings.AddPicture("Pic3", Resources.Test1); | 
|  | pic.SetPosition(400, 200); | 
|  | pic.SetSize(150); | 
|  |  | 
|  | pic = ws.Drawings.AddPicture("Pic4", new FileInfo(Path.Combine(_clipartPath, "Vector Drawing.wmf"))); | 
|  | pic = ws.Drawings.AddPicture("Pic5", new FileInfo(Path.Combine(_clipartPath,"BitmapImage.gif"))); | 
|  | pic.SetPosition(400, 200); | 
|  | pic.SetSize(150); | 
|  |  | 
|  | ws.Column(1).Width = 53; | 
|  | ws.Column(4).Width = 58; | 
|  |  | 
|  | pic = ws.Drawings.AddPicture("Pic6öäå", new FileInfo(Path.Combine(_clipartPath, "BitmapImage.gif"))); | 
|  | pic.SetPosition(400, 400); | 
|  | pic.SetSize(100); | 
|  |  | 
|  | var ws2 = _pck.Workbook.Worksheets.Add("Picture2"); | 
|  | var fi = new FileInfo(@"C:\Program Files (x86)\Microsoft Office\CLIPART\PUB60COR\AG00021_.GIF"); | 
|  | if (fi.Exists) | 
|  | { | 
|  | pic = ws2.Drawings.AddPicture("Pic7", fi); | 
|  | } | 
|  | else | 
|  | { | 
|  | TestContext.WriteLine("AG00021_.GIF does not exists. Skiping Pic7."); | 
|  | } | 
|  |  | 
|  | var wsCopy = _pck.Workbook.Worksheets.Add("Picture3", ws2); | 
|  | _pck.Workbook.Worksheets.Delete(ws2); | 
|  | } | 
|  | //[TestMethod] | 
|  | //[Ignore] | 
|  | public void DrawingSizingAndPositioning() | 
|  | { | 
|  | var ws = _pck.Workbook.Worksheets.Add("DrawingPosSize"); | 
|  |  | 
|  | var pic = ws.Drawings.AddPicture("Pic1", Resources.Test1); | 
|  | pic.SetPosition(1, 0, 1, 0); | 
|  |  | 
|  | pic = ws.Drawings.AddPicture("Pic2", Resources.Test1); | 
|  | pic.EditAs = eEditAs.Absolute; | 
|  | pic.SetPosition(10, 5, 1, 4); | 
|  |  | 
|  | pic = ws.Drawings.AddPicture("Pic3", Resources.Test1); | 
|  | pic.EditAs = eEditAs.TwoCell; | 
|  | pic.SetPosition(20, 5, 2, 4); | 
|  |  | 
|  |  | 
|  | ws.Column(1).Width = 100; | 
|  | ws.Column(3).Width = 100; | 
|  | } | 
|  |  | 
|  | //[TestMethod] | 
|  | // [Ignore] | 
|  | public void BarChart() | 
|  | { | 
|  | var ws = _pck.Workbook.Worksheets.Add("BarChart"); | 
|  | var chrt = ws.Drawings.AddChart("barChart", eChartType.BarClustered) as ExcelBarChart; | 
|  | chrt.SetPosition(50, 50); | 
|  | chrt.SetSize(800, 300); | 
|  | AddTestSerie(ws, chrt); | 
|  | chrt.VaryColors = true; | 
|  | chrt.XAxis.Orientation = eAxisOrientation.MaxMin; | 
|  | chrt.XAxis.MajorTickMark = eAxisTickMark.In; | 
|  | chrt.YAxis.Orientation = eAxisOrientation.MaxMin; | 
|  | chrt.YAxis.MinorTickMark = eAxisTickMark.Out; | 
|  | chrt.ShowHiddenData = true; | 
|  | chrt.DisplayBlanksAs = eDisplayBlanksAs.Zero; | 
|  | chrt.Title.RichText.Text = "Barchart Test"; | 
|  | Assert.IsTrue(chrt.ChartType == eChartType.BarClustered, "Invalid Charttype"); | 
|  | Assert.IsTrue(chrt.Direction == eDirection.Bar, "Invalid Bardirection"); | 
|  | Assert.IsTrue(chrt.Grouping == eGrouping.Clustered, "Invalid Grouping"); | 
|  | Assert.IsTrue(chrt.Shape == eShape.Box, "Invalid Shape"); | 
|  | } | 
|  |  | 
|  | private static void AddTestSerie(ExcelWorksheet ws, ExcelChart chrt) | 
|  | { | 
|  | AddTestData(ws); | 
|  | chrt.Series.Add("'" + ws.Name + "'!V19:V24", "'" + ws.Name + "'!U19:U24"); | 
|  | } | 
|  |  | 
|  | private static void AddTestData(ExcelWorksheet ws) | 
|  | { | 
|  | ws.Cells["U19"].Value = new DateTime(2009, 12, 31); | 
|  | ws.Cells["U20"].Value = new DateTime(2010, 1, 1); | 
|  | ws.Cells["U21"].Value = new DateTime(2010, 1, 2); | 
|  | ws.Cells["U22"].Value = new DateTime(2010, 1, 3); | 
|  | ws.Cells["U23"].Value = new DateTime(2010, 1, 4); | 
|  | ws.Cells["U24"].Value = new DateTime(2010, 1, 5); | 
|  | ws.Cells["U19:U24"].Style.Numberformat.Format = "yyyy-mm-dd"; | 
|  |  | 
|  | ws.Cells["V19"].Value = 100; | 
|  | ws.Cells["V20"].Value = 102; | 
|  | ws.Cells["V21"].Value = 101; | 
|  | ws.Cells["V22"].Value = 103; | 
|  | ws.Cells["V23"].Value = 105; | 
|  | ws.Cells["V24"].Value = 104; | 
|  |  | 
|  | ws.Cells["X19"].Value = "öäå"; | 
|  | ws.Cells["X20"].Value = "ÖÄÅ"; | 
|  | ws.Cells["X21"].Value = "üÛ"; | 
|  | ws.Cells["X22"].Value = "&%#¤"; | 
|  | ws.Cells["X23"].Value = "ÿ"; | 
|  | ws.Cells["X24"].Value = "û"; | 
|  | } | 
|  | //[TestMethod] | 
|  | //[Ignore] | 
|  | public void PieChart() | 
|  | { | 
|  | var ws = _pck.Workbook.Worksheets.Add("PieChart"); | 
|  | var chrt = ws.Drawings.AddChart("pieChart", eChartType.Pie) as ExcelPieChart; | 
|  |  | 
|  | AddTestSerie(ws, chrt); | 
|  |  | 
|  | chrt.To.Row = 25; | 
|  | chrt.To.Column = 12; | 
|  |  | 
|  | chrt.DataLabel.ShowPercent = true; | 
|  | chrt.Legend.Font.Color = Color.SteelBlue; | 
|  | chrt.Title.Border.Fill.Style = eFillStyle.SolidFill; | 
|  | chrt.Legend.Position = eLegendPosition.TopRight; | 
|  | Assert.IsTrue(chrt.ChartType == eChartType.Pie, "Invalid Charttype"); | 
|  | Assert.IsTrue(chrt.VaryColors); | 
|  | chrt.Title.Text = "Piechart"; | 
|  | } | 
|  | //[TestMethod] | 
|  | //[Ignore] | 
|  | public void PieChart3D() | 
|  | { | 
|  | var ws = _pck.Workbook.Worksheets.Add("PieChart3d"); | 
|  | var chrt = ws.Drawings.AddChart("pieChart3d", eChartType.Pie3D) as ExcelPieChart; | 
|  | AddTestSerie(ws, chrt); | 
|  |  | 
|  | chrt.To.Row = 25; | 
|  | chrt.To.Column = 12; | 
|  |  | 
|  | chrt.DataLabel.ShowValue = true; | 
|  | chrt.Legend.Position = eLegendPosition.Left; | 
|  | chrt.ShowHiddenData = false; | 
|  | chrt.DisplayBlanksAs = eDisplayBlanksAs.Gap; | 
|  | chrt.Title.RichText.Add("Pie RT Title add"); | 
|  | Assert.IsTrue(chrt.ChartType == eChartType.Pie3D, "Invalid Charttype"); | 
|  | Assert.IsTrue(chrt.VaryColors); | 
|  |  | 
|  | } | 
|  | //[TestMethod] | 
|  | //[Ignore] | 
|  | public void Scatter() | 
|  | { | 
|  | var ws = _pck.Workbook.Worksheets.Add("Scatter"); | 
|  | var chrt = ws.Drawings.AddChart("ScatterChart1", eChartType.XYScatterSmoothNoMarkers) as ExcelScatterChart; | 
|  | AddTestSerie(ws, chrt); | 
|  | // chrt.Series[0].Marker = eMarkerStyle.Diamond; | 
|  | chrt.To.Row = 23; | 
|  | chrt.To.Column = 12; | 
|  | //chrt.Title.Text = "Header Text"; | 
|  | var r1=chrt.Title.RichText.Add("Header"); | 
|  | r1.Bold = true; | 
|  | var r2=chrt.Title.RichText.Add("  Text"); | 
|  | r2.UnderLine = eUnderLineType.WavyHeavy; | 
|  |  | 
|  | chrt.Title.Fill.Style = eFillStyle.SolidFill; | 
|  | chrt.Title.Fill.Color = Color.LightBlue; | 
|  | chrt.Title.Fill.Transparancy = 50; | 
|  | chrt.VaryColors = true; | 
|  | ExcelScatterChartSerie ser = chrt.Series[0] as ExcelScatterChartSerie; | 
|  | ser.DataLabel.Position = eLabelPosition.Center; | 
|  | ser.DataLabel.ShowValue = true; | 
|  | ser.DataLabel.ShowCategory = true; | 
|  | ser.DataLabel.Fill.Color = Color.BlueViolet; | 
|  | ser.DataLabel.Font.Color = Color.White; | 
|  | ser.DataLabel.Font.Italic = true; | 
|  | ser.DataLabel.Font.SetFromFont(new Font("bookman old style", 8)); | 
|  | Assert.IsTrue(chrt.ChartType == eChartType.XYScatterSmoothNoMarkers, "Invalid Charttype"); | 
|  | chrt.Series[0].Header = "Test serie"; | 
|  | chrt = ws.Drawings.AddChart("ScatterChart2", eChartType.XYScatterSmooth) as ExcelScatterChart; | 
|  | chrt.Series.Add("U19:U24", "V19:V24"); | 
|  |  | 
|  | chrt.From.Column = 0; | 
|  | chrt.From.Row=25; | 
|  | chrt.To.Row = 53; | 
|  | chrt.To.Column = 12; | 
|  | chrt.Legend.Position = eLegendPosition.Bottom; | 
|  |  | 
|  | ////chrt.Series[0].DataLabel.Position = eLabelPosition.Center; | 
|  | //Assert.IsTrue(chrt.ChartType == eChartType.XYScatter, "Invalid Charttype"); | 
|  |  | 
|  | } | 
|  | //[TestMethod] | 
|  | //[Ignore] | 
|  | public void Bubble() | 
|  | { | 
|  | var ws = _pck.Workbook.Worksheets.Add("Bubble"); | 
|  | var chrt = ws.Drawings.AddChart("Bubble", eChartType.Bubble) as ExcelBubbleChart; | 
|  | AddTestData(ws); | 
|  |  | 
|  | chrt.Series.Add("V19:V24", "U19:U24"); | 
|  |  | 
|  | chrt = ws.Drawings.AddChart("Bubble3d", eChartType.Bubble3DEffect) as ExcelBubbleChart; | 
|  | ws.Cells["W19"].Value = 1; | 
|  | ws.Cells["W20"].Value = 1; | 
|  | ws.Cells["W21"].Value = 2; | 
|  | ws.Cells["W22"].Value = 2; | 
|  | ws.Cells["W23"].Value = 3; | 
|  | ws.Cells["W24"].Value = 4; | 
|  |  | 
|  | chrt.Series.Add("V19:V24", "U19:U24", "W19:W24"); | 
|  | chrt.Style = eChartStyle.Style25; | 
|  |  | 
|  | // chrt.Series[0].Marker = eMarkerStyle.Diamond; | 
|  | chrt.From.Row = 23; | 
|  | chrt.From.Column = 12; | 
|  | chrt.To.Row = 33; | 
|  | chrt.To.Column = 22; | 
|  | chrt.Title.Text = "Header Text"; | 
|  |  | 
|  |  | 
|  | } | 
|  | //[TestMethod] | 
|  | //[Ignore] | 
|  | public void Radar() | 
|  | { | 
|  | var ws = _pck.Workbook.Worksheets.Add("Radar"); | 
|  | AddTestData(ws); | 
|  |  | 
|  | var chrt = ws.Drawings.AddChart("Radar1", eChartType.Radar) as ExcelRadarChart; | 
|  | var s=chrt.Series.Add("V19:V24", "U19:U24"); | 
|  | s.Header = "serie1"; | 
|  | // chrt.Series[0].Marker = eMarkerStyle.Diamond; | 
|  | chrt.From.Row = 23; | 
|  | chrt.From.Column = 12; | 
|  | chrt.To.Row = 38; | 
|  | chrt.To.Column = 22; | 
|  | chrt.Title.Text = "Radar Chart 1"; | 
|  |  | 
|  | chrt = ws.Drawings.AddChart("Radar2", eChartType.RadarFilled) as ExcelRadarChart; | 
|  | s = chrt.Series.Add("V19:V24", "U19:U24"); | 
|  | s.Header = "serie1"; | 
|  | // chrt.Series[0].Marker = eMarkerStyle.Diamond; | 
|  | chrt.From.Row = 43; | 
|  | chrt.From.Column = 12; | 
|  | chrt.To.Row = 58; | 
|  | chrt.To.Column = 22; | 
|  | chrt.Title.Text = "Radar Chart 2"; | 
|  |  | 
|  | chrt = ws.Drawings.AddChart("Radar3", eChartType.RadarMarkers) as ExcelRadarChart; | 
|  | var rs = (ExcelRadarChartSerie)chrt.Series.Add("V19:V24", "U19:U24"); | 
|  | rs.Header = "serie1"; | 
|  | rs.Marker = eMarkerStyle.Star; | 
|  | rs.MarkerSize = 14; | 
|  |  | 
|  | // chrt.Series[0].Marker = eMarkerStyle.Diamond; | 
|  | chrt.From.Row = 63; | 
|  | chrt.From.Column = 12; | 
|  | chrt.To.Row = 78; | 
|  | chrt.To.Column = 22; | 
|  | chrt.Title.Text = "Radar Chart 3"; | 
|  | } | 
|  | //[TestMethod] | 
|  | //[Ignore] | 
|  | public void Surface() | 
|  | { | 
|  | var ws = _pck.Workbook.Worksheets.Add("Surface"); | 
|  | AddTestData(ws); | 
|  |  | 
|  | var chrt = ws.Drawings.AddChart("Surface1", eChartType.Surface) as ExcelSurfaceChart; | 
|  | var s = chrt.Series.Add("V19:V24", "U19:U24"); | 
|  | s.Header = "serie1"; | 
|  | // chrt.Series[0].Marker = eMarkerStyle.Diamond; | 
|  | chrt.From.Row = 23; | 
|  | chrt.From.Column = 12; | 
|  | chrt.To.Row = 38; | 
|  | chrt.To.Column = 22; | 
|  | chrt.Title.Text = "Surface Chart 1"; | 
|  |  | 
|  | //chrt = ws.Drawings.AddChart("Surface", eChartType.RadarFilled) as ExcelRadarChart; | 
|  | //s = chrt.Series.Add("V19:V24", "U19:U24"); | 
|  | //s.Header = "serie1"; | 
|  | //// chrt.Series[0].Marker = eMarkerStyle.Diamond; | 
|  | //chrt.From.Row = 43; | 
|  | //chrt.From.Column = 12; | 
|  | //chrt.To.Row = 58; | 
|  | //chrt.To.Column = 22; | 
|  | //chrt.Title.Text = "Radar Chart 2"; | 
|  |  | 
|  | //chrt = ws.Drawings.AddChart("Radar3", eChartType.RadarMarkers) as ExcelRadarChart; | 
|  | //var rs = (ExcelRadarChartSerie)chrt.Series.Add("V19:V24", "U19:U24"); | 
|  | //rs.Header = "serie1"; | 
|  | //rs.Marker = eMarkerStyle.Star; | 
|  | //rs.MarkerSize = 14; | 
|  |  | 
|  | //// chrt.Series[0].Marker = eMarkerStyle.Diamond; | 
|  | //chrt.From.Row = 63; | 
|  | //chrt.From.Column = 12; | 
|  | //chrt.To.Row = 78; | 
|  | //chrt.To.Column = 22; | 
|  | //chrt.Title.Text = "Radar Chart 3"; | 
|  | } | 
|  | //[TestMethod] | 
|  | //[Ignore] | 
|  | public void Pyramid() | 
|  | { | 
|  | var ws = _pck.Workbook.Worksheets.Add("Pyramid"); | 
|  | var chrt = ws.Drawings.AddChart("Pyramid1", eChartType.PyramidCol) as ExcelBarChart; | 
|  | AddTestSerie(ws, chrt); | 
|  | // chrt.Series[0].Marker = eMarkerStyle.Diamond; | 
|  | chrt.VaryColors = true; | 
|  | chrt.To.Row = 23; | 
|  | chrt.To.Column = 12; | 
|  | chrt.Title.Text = "Header Text"; | 
|  | chrt.Title.Fill.Style= eFillStyle.SolidFill; | 
|  | chrt.Title.Fill.Color = Color.DarkBlue; | 
|  | chrt.DataLabel.ShowValue = true; | 
|  | //chrt.DataLabel.ShowSeriesName = true; | 
|  | //chrt.DataLabel.Separator = ","; | 
|  | chrt.Border.LineCap = eLineCap.Round; | 
|  | chrt.Border.LineStyle = eLineStyle.LongDashDotDot; | 
|  | chrt.Border.Fill.Style = eFillStyle.SolidFill; | 
|  | chrt.Border.Fill.Color = Color.Blue; | 
|  |  | 
|  | chrt.Fill.Color = Color.LightCyan; | 
|  | chrt.PlotArea.Fill.Color = Color.White; | 
|  | chrt.PlotArea.Border.Fill.Style = eFillStyle.SolidFill; | 
|  | chrt.PlotArea.Border.Fill.Color = Color.Beige; | 
|  | chrt.PlotArea.Border.LineStyle = eLineStyle.LongDash; | 
|  |  | 
|  | chrt.Legend.Fill.Color = Color.Aquamarine; | 
|  | chrt.Legend.Position = eLegendPosition.Top; | 
|  | chrt.Axis[0].Fill.Style = eFillStyle.SolidFill; | 
|  | chrt.Axis[0].Fill.Color = Color.Black; | 
|  | chrt.Axis[0].Font.Color = Color.White; | 
|  |  | 
|  | chrt.Axis[1].Fill.Style = eFillStyle.SolidFill; | 
|  | chrt.Axis[1].Fill.Color = Color.LightSlateGray; | 
|  | chrt.Axis[1].Font.Color = Color.DarkRed; | 
|  |  | 
|  | chrt.DataLabel.Font.Bold = true; | 
|  | chrt.DataLabel.Fill.Color = Color.LightBlue; | 
|  | chrt.DataLabel.Border.Fill.Style=eFillStyle.SolidFill; | 
|  | chrt.DataLabel.Border.Fill.Color=Color.Black; | 
|  | chrt.DataLabel.Border.LineStyle = eLineStyle.Solid; | 
|  | } | 
|  | //[TestMethod] | 
|  | //[Ignore] | 
|  | public void Cone() | 
|  | { | 
|  | var ws = _pck.Workbook.Worksheets.Add("Cone"); | 
|  | var chrt = ws.Drawings.AddChart("Cone1", eChartType.ConeBarClustered) as ExcelBarChart; | 
|  | AddTestSerie(ws, chrt); | 
|  | chrt.VaryColors = true; | 
|  | chrt.SetSize(200); | 
|  | chrt.Title.Text = "Cone bar"; | 
|  | chrt.Series[0].Header = "Serie 1"; | 
|  | chrt.Legend.Position = eLegendPosition.Right; | 
|  | chrt.Axis[1].DisplayUnit = 100000; | 
|  | Assert.AreEqual(chrt.Axis[1].DisplayUnit, 100000); | 
|  | } | 
|  | //[TestMethod] | 
|  | //[Ignore] | 
|  | public void Column() | 
|  | { | 
|  | var ws = _pck.Workbook.Worksheets.Add("Column"); | 
|  | var chrt = ws.Drawings.AddChart("Column1", eChartType.ColumnClustered3D) as ExcelBarChart; | 
|  | AddTestSerie(ws, chrt); | 
|  | chrt.VaryColors = true; | 
|  | chrt.View3D.RightAngleAxes = true; | 
|  | chrt.View3D.DepthPercent = 99; | 
|  | //chrt.View3D.HeightPercent = 99; | 
|  | chrt.View3D.RightAngleAxes = true; | 
|  | chrt.SetSize(200); | 
|  | chrt.Title.Text = "Column"; | 
|  | chrt.Series[0].Header = "Serie 1"; | 
|  | chrt.Locked = false; | 
|  | chrt.Print = false; | 
|  | chrt.EditAs = eEditAs.TwoCell; | 
|  | chrt.Axis[1].DisplayUnit = 10020; | 
|  | Assert.AreEqual(chrt.Axis[1].DisplayUnit, 10020); | 
|  | } | 
|  | //[TestMethod] | 
|  | //[Ignore] | 
|  | public void Dougnut() | 
|  | { | 
|  | var ws = _pck.Workbook.Worksheets.Add("Dougnut"); | 
|  | var chrt = ws.Drawings.AddChart("Dougnut1", eChartType.DoughnutExploded) as ExcelDoughnutChart; | 
|  | AddTestSerie(ws, chrt); | 
|  | chrt.SetSize(200); | 
|  | chrt.Title.Text = "Doughnut Exploded"; | 
|  | chrt.Series[0].Header = "Serie 1"; | 
|  | chrt.EditAs = eEditAs.Absolute; | 
|  | } | 
|  | //[TestMethod] | 
|  | //[Ignore] | 
|  | public void Line() | 
|  | { | 
|  | var ws = _pck.Workbook.Worksheets.Add("Line"); | 
|  | var chrt = ws.Drawings.AddChart("Line1", eChartType.Line) as ExcelLineChart; | 
|  | AddTestSerie(ws, chrt); | 
|  | chrt.SetSize(150); | 
|  | chrt.VaryColors = true; | 
|  | chrt.Smooth = false; | 
|  | chrt.Title.Text = "Line 3D"; | 
|  | chrt.Series[0].Header = "Line serie 1"; | 
|  | var tl = chrt.Series[0].TrendLines.Add(eTrendLine.Polynomial); | 
|  | tl.Name = "Test"; | 
|  | tl.DisplayRSquaredValue = true; | 
|  | tl.DisplayEquation = true; | 
|  | tl.Forward = 15; | 
|  | tl.Backward = 1; | 
|  | tl.Intercept = 6; | 
|  | //tl.Period = 12; | 
|  | tl.Order = 5; | 
|  |  | 
|  | tl = chrt.Series[0].TrendLines.Add(eTrendLine.MovingAvgerage); | 
|  | chrt.Fill.Color = Color.LightSteelBlue; | 
|  | chrt.Border.LineStyle = eLineStyle.Dot; | 
|  | chrt.Border.Fill.Color=Color.Black; | 
|  |  | 
|  | chrt.Legend.Font.Color = Color.Red; | 
|  | chrt.Legend.Font.Strike = eStrikeType.Double; | 
|  | chrt.Title.Font.Color = Color.DarkGoldenrod; | 
|  | chrt.Title.Font.LatinFont = "Arial"; | 
|  | chrt.Title.Font.Bold = true; | 
|  | chrt.Title.Fill.Color = Color.White; | 
|  | chrt.Title.Border.Fill.Style = eFillStyle.SolidFill; | 
|  | chrt.Title.Border.LineStyle = eLineStyle.LongDashDotDot; | 
|  | chrt.Title.Border.Fill.Color = Color.Tomato; | 
|  | chrt.DataLabel.ShowSeriesName = true; | 
|  | chrt.DataLabel.ShowLeaderLines=true; | 
|  | chrt.EditAs = eEditAs.OneCell; | 
|  | chrt.DisplayBlanksAs = eDisplayBlanksAs.Span; | 
|  | chrt.Axis[0].Title.Text = "Axis 0"; | 
|  | chrt.Axis[0].Title.Rotation = 90; | 
|  | chrt.Axis[0].Title.Overlay = true; | 
|  | chrt.Axis[1].Title.Text = "Axis 1"; | 
|  | chrt.Axis[1].Title.AnchorCtr = true; | 
|  | chrt.Axis[1].Title.TextVertical = eTextVerticalType.Vertical270; | 
|  | chrt.Axis[1].Title.Border.LineStyle=eLineStyle.LongDashDotDot; | 
|  |  | 
|  | } | 
|  | //[TestMethod] | 
|  | //[Ignore] | 
|  | public void LineMarker() | 
|  | { | 
|  | var ws = _pck.Workbook.Worksheets.Add("LineMarker1"); | 
|  | var chrt = ws.Drawings.AddChart("Line1", eChartType.LineMarkers) as ExcelLineChart; | 
|  | AddTestSerie(ws, chrt); | 
|  | chrt.SetSize(150); | 
|  | chrt.Title.Text = "Line Markers"; | 
|  | chrt.Series[0].Header = "Line serie 1"; | 
|  | ((ExcelLineChartSerie)chrt.Series[0]).Marker = eMarkerStyle.Plus; | 
|  |  | 
|  | var chrt2 = ws.Drawings.AddChart("Line2", eChartType.LineMarkers) as ExcelLineChart; | 
|  | AddTestSerie(ws, chrt2); | 
|  | chrt2.SetPosition(500,0); | 
|  | chrt2.SetSize(150); | 
|  | chrt2.Title.Text = "Line Markers"; | 
|  | var serie = (ExcelLineChartSerie)chrt2.Series[0]; | 
|  | serie.Marker = eMarkerStyle.X; | 
|  |  | 
|  | } | 
|  | //[TestMethod] | 
|  | //[Ignore] | 
|  | public void Drawings() | 
|  | { | 
|  | var ws = _pck.Workbook.Worksheets.Add("Shapes"); | 
|  | int y=100, i=1; | 
|  | foreach(eShapeStyle style in Enum.GetValues(typeof(eShapeStyle))) | 
|  | { | 
|  | var shape = ws.Drawings.AddShape("shape"+i.ToString(), style); | 
|  | shape.SetPosition(y, 100); | 
|  | shape.SetSize(300, 300); | 
|  | y += 400; | 
|  | shape.Text = style.ToString(); | 
|  | i++; | 
|  | } | 
|  |  | 
|  | (ws.Drawings["shape1"] as ExcelShape).TextAnchoring = eTextAnchoringType.Top; | 
|  | var rt = (ws.Drawings["shape1"] as ExcelShape).RichText.Add("Added formated richtext"); | 
|  | (ws.Drawings["shape1"] as ExcelShape).LockText = false; | 
|  | rt.Bold = true; | 
|  | rt.Color = Color.Aquamarine; | 
|  | rt.Italic = true; | 
|  | rt.Size = 17; | 
|  | (ws.Drawings["shape2"] as ExcelShape).TextVertical = eTextVerticalType.Vertical; | 
|  | rt = (ws.Drawings["shape2"] as ExcelShape).RichText.Add("\r\nAdded formated richtext"); | 
|  | rt.Bold = true; | 
|  | rt.Color = Color.DarkGoldenrod ; | 
|  | rt.SetFromFont(new Font("Times new roman", 18, FontStyle.Underline)); | 
|  | rt.UnderLineColor = Color.Green; | 
|  |  | 
|  |  | 
|  | (ws.Drawings["shape3"] as ExcelShape).TextAnchoring=eTextAnchoringType.Bottom; | 
|  | (ws.Drawings["shape3"] as ExcelShape).TextAnchoringControl=true ; | 
|  |  | 
|  | (ws.Drawings["shape4"] as ExcelShape).TextVertical = eTextVerticalType.Vertical270; | 
|  | (ws.Drawings["shape4"] as ExcelShape).TextAnchoring = eTextAnchoringType.Top; | 
|  |  | 
|  | (ws.Drawings["shape5"] as ExcelShape).Fill.Style=eFillStyle.SolidFill; | 
|  | (ws.Drawings["shape5"] as ExcelShape).Fill.Color=Color.Red; | 
|  | (ws.Drawings["shape5"] as ExcelShape).Fill.Transparancy = 50; | 
|  |  | 
|  | (ws.Drawings["shape6"] as ExcelShape).Fill.Style = eFillStyle.NoFill; | 
|  | (ws.Drawings["shape6"] as ExcelShape).Font.Color = Color.Black; | 
|  | (ws.Drawings["shape6"] as ExcelShape).Border.Fill.Color = Color.Black; | 
|  |  | 
|  | (ws.Drawings["shape7"] as ExcelShape).Fill.Style = eFillStyle.SolidFill; | 
|  | (ws.Drawings["shape7"] as ExcelShape).Fill.Color=Color.Gray; | 
|  | (ws.Drawings["shape7"] as ExcelShape).Border.Fill.Style=eFillStyle.SolidFill; | 
|  | (ws.Drawings["shape7"] as ExcelShape).Border.Fill.Color = Color.Black; | 
|  | (ws.Drawings["shape7"] as ExcelShape).Border.Fill.Transparancy=43; | 
|  | (ws.Drawings["shape7"] as ExcelShape).Border.LineCap=eLineCap.Round; | 
|  | (ws.Drawings["shape7"] as ExcelShape).Border.LineStyle = eLineStyle.LongDash; | 
|  | (ws.Drawings["shape7"] as ExcelShape).Font.UnderLineColor = Color.Blue; | 
|  | (ws.Drawings["shape7"] as ExcelShape).Font.Color = Color.Black; | 
|  | (ws.Drawings["shape7"] as ExcelShape).Font.Bold = true; | 
|  | (ws.Drawings["shape7"] as ExcelShape).Font.LatinFont = "Arial"; | 
|  | (ws.Drawings["shape7"] as ExcelShape).Font.ComplexFont = "Arial"; | 
|  | (ws.Drawings["shape7"] as ExcelShape).Font.Italic = true; | 
|  | (ws.Drawings["shape7"] as ExcelShape).Font.UnderLine = eUnderLineType.Dotted; | 
|  |  | 
|  | (ws.Drawings["shape8"] as ExcelShape).Fill.Style = eFillStyle.SolidFill; | 
|  | (ws.Drawings["shape8"] as ExcelShape).Font.LatinFont = "Miriam"; | 
|  | (ws.Drawings["shape8"] as ExcelShape).Font.UnderLineColor = Color.CadetBlue; | 
|  | (ws.Drawings["shape8"] as ExcelShape).Font.UnderLine = eUnderLineType.Single; | 
|  |  | 
|  | (ws.Drawings["shape9"] as ExcelShape).TextAlignment = eTextAlignment.Right; | 
|  |  | 
|  | } | 
|  | [TestMethod] | 
|  | [Ignore] | 
|  | public void DrawingWorksheetCopy() | 
|  | { | 
|  | var wsShapes = _pck.Workbook.Worksheets.Add("Copy Shapes", _pck.Workbook.Worksheets["Shapes"]); | 
|  | var wsScatterChart = _pck.Workbook.Worksheets.Add("Copy Scatter", _pck.Workbook.Worksheets["Scatter"]); | 
|  | var wsPicture = _pck.Workbook.Worksheets.Add("Copy Picture", _pck.Workbook.Worksheets["Picture"]); | 
|  | } | 
|  | //[TestMethod] | 
|  | //[Ignore] | 
|  | public void Line2Test() | 
|  | { | 
|  | ExcelWorksheet worksheet = _pck.Workbook.Worksheets.Add("LineIssue"); | 
|  |  | 
|  | ExcelChart chart = worksheet.Drawings.AddChart("LineChart", eChartType.Line); | 
|  |  | 
|  | worksheet.Cells["A1"].Value=1; | 
|  | worksheet.Cells["A2"].Value=2; | 
|  | worksheet.Cells["A3"].Value=3; | 
|  | worksheet.Cells["A4"].Value=4; | 
|  | worksheet.Cells["A5"].Value=5; | 
|  | worksheet.Cells["A6"].Value=6; | 
|  |  | 
|  | worksheet.Cells["B1"].Value=10000; | 
|  | worksheet.Cells["B2"].Value=10100; | 
|  | worksheet.Cells["B3"].Value=10200; | 
|  | worksheet.Cells["B4"].Value=10150; | 
|  | worksheet.Cells["B5"].Value=10250; | 
|  | worksheet.Cells["B6"].Value=10200; | 
|  |  | 
|  | chart.Series.Add(ExcelRange.GetAddress(1, 2, worksheet.Dimension.End.Row, 2), | 
|  | ExcelRange.GetAddress(1, 1, worksheet.Dimension.End.Row, 1)); | 
|  |  | 
|  | var Series = chart.Series[0]; | 
|  |  | 
|  | chart.Series[0].Header = "Blah"; | 
|  | } | 
|  | //[TestMethod] | 
|  | //[Ignore] | 
|  | public void MultiChartSeries() | 
|  | { | 
|  | ExcelWorksheet worksheet = _pck.Workbook.Worksheets.Add("MultiChartTypes"); | 
|  |  | 
|  | ExcelChart chart = worksheet.Drawings.AddChart("chtPie", eChartType.LineMarkers); | 
|  | chart.SetPosition(100, 100); | 
|  | chart.SetSize(800,600); | 
|  | AddTestSerie(worksheet, chart); | 
|  | chart.Series[0].Header = "Serie5"; | 
|  | chart.Style = eChartStyle.Style27; | 
|  | worksheet.Cells["W19"].Value = 120; | 
|  | worksheet.Cells["W20"].Value = 122; | 
|  | worksheet.Cells["W21"].Value = 121; | 
|  | worksheet.Cells["W22"].Value = 123; | 
|  | worksheet.Cells["W23"].Value = 125; | 
|  | worksheet.Cells["W24"].Value = 124; | 
|  |  | 
|  | worksheet.Cells["X19"].Value = 90; | 
|  | worksheet.Cells["X20"].Value = 52; | 
|  | worksheet.Cells["X21"].Value = 88; | 
|  | worksheet.Cells["X22"].Value = 75; | 
|  | worksheet.Cells["X23"].Value = 77; | 
|  | worksheet.Cells["X24"].Value = 99; | 
|  |  | 
|  | var cs2 = chart.PlotArea.ChartTypes.Add(eChartType.ColumnClustered); | 
|  | var s = cs2.Series.Add(worksheet.Cells["W19:W24"], worksheet.Cells["U19:U24"]); | 
|  | s.Header = "Serie4"; | 
|  | cs2.YAxis.MaxValue = 300; | 
|  | cs2.YAxis.MinValue = -5.5; | 
|  | var cs3 = chart.PlotArea.ChartTypes.Add(eChartType.Line); | 
|  | s=cs3.Series.Add(worksheet.Cells["X19:X24"], worksheet.Cells["U19:U24"]); | 
|  | s.Header = "Serie1"; | 
|  | cs3.UseSecondaryAxis = true; | 
|  |  | 
|  | cs3.XAxis.Deleted = false; | 
|  | cs3.XAxis.MajorUnit = 20; | 
|  | cs3.XAxis.MinorUnit = 3; | 
|  |  | 
|  | cs3.XAxis.TickLabelPosition = eTickLabelPosition.High; | 
|  | cs3.YAxis.LogBase = 10.2; | 
|  |  | 
|  | var chart2 = worksheet.Drawings.AddChart("scatter1", eChartType.XYScatterSmooth); | 
|  | s=chart2.Series.Add(worksheet.Cells["W19:W24"], worksheet.Cells["U19:U24"]); | 
|  | s.Header = "Serie2"; | 
|  |  | 
|  | var c2ct2 = chart2.PlotArea.ChartTypes.Add(eChartType.XYScatterSmooth); | 
|  | s=c2ct2.Series.Add(worksheet.Cells["X19:X24"], worksheet.Cells["V19:V24"]); | 
|  | s.Header="Serie3"; | 
|  | s=c2ct2.Series.Add(worksheet.Cells["W19:W24"], worksheet.Cells["V19:V24"]); | 
|  | s.Header = "Serie4"; | 
|  |  | 
|  | c2ct2.UseSecondaryAxis = true; | 
|  | c2ct2.XAxis.Deleted = false; | 
|  | c2ct2.XAxis.TickLabelPosition = eTickLabelPosition.High; | 
|  |  | 
|  | ExcelChart chart3 = worksheet.Drawings.AddChart("chart", eChartType.LineMarkers); | 
|  | chart3.SetPosition(300, 1000); | 
|  | var s31=chart3.Series.Add(worksheet.Cells["W19:W24"], worksheet.Cells["U19:U24"]); | 
|  | s31.Header = "Serie1"; | 
|  |  | 
|  | var c3ct2 = chart3.PlotArea.ChartTypes.Add(eChartType.LineMarkers); | 
|  | var c32 = c3ct2.Series.Add(worksheet.Cells["X19:X24"], worksheet.Cells["V19:V24"]); | 
|  | c3ct2.UseSecondaryAxis = true; | 
|  | c32.Header = "Serie2"; | 
|  |  | 
|  | XmlNamespaceManager ns=new XmlNamespaceManager(new NameTable()); | 
|  | ns.AddNamespace("c","http://schemas.openxmlformats.org/drawingml/2006/chart"); | 
|  | var element = chart.ChartXml.SelectSingleNode("//c:plotVisOnly", ns); | 
|  | if (element!=null) element.ParentNode.RemoveChild(element); | 
|  | } | 
|  | //[TestMethod] | 
|  | //[Ignore] | 
|  | public void DeleteDrawing() | 
|  | { | 
|  | var ws=_pck.Workbook.Worksheets.Add("DeleteDrawing1"); | 
|  | var chart1 = ws.Drawings.AddChart("Chart1", eChartType.Line); | 
|  | var chart2 = ws.Drawings.AddChart("Chart2", eChartType.Line); | 
|  | var shape1 = ws.Drawings.AddShape("Shape1", eShapeStyle.ActionButtonBackPrevious); | 
|  | var pic1 = ws.Drawings.AddPicture("Pic1", Resources.Test1); | 
|  | ws.Drawings.Remove(2); | 
|  | ws.Drawings.Remove(chart2); | 
|  | ws.Drawings.Remove("Pic1"); | 
|  |  | 
|  | ws = _pck.Workbook.Worksheets.Add("DeleteDrawing2"); | 
|  | chart1 = ws.Drawings.AddChart("Chart1", eChartType.Line); | 
|  | chart2 = ws.Drawings.AddChart("Chart2", eChartType.Line); | 
|  | shape1 = ws.Drawings.AddShape("Shape1", eShapeStyle.ActionButtonBackPrevious); | 
|  | pic1 = ws.Drawings.AddPicture("Pic1", Resources.Test1); | 
|  |  | 
|  | ws.Drawings.Remove("chart1"); | 
|  |  | 
|  | ws = _pck.Workbook.Worksheets.Add("ClearDrawing2"); | 
|  | chart1 = ws.Drawings.AddChart("Chart1", eChartType.Line); | 
|  | chart2 = ws.Drawings.AddChart("Chart2", eChartType.Line); | 
|  | shape1 = ws.Drawings.AddShape("Shape1", eShapeStyle.ActionButtonBackPrevious); | 
|  | pic1 = ws.Drawings.AddPicture("Pic1", Resources.Test1); | 
|  | ws.Drawings.Clear(); | 
|  | } | 
|  | //[TestMethod] | 
|  | //[Ignore] | 
|  | public void ReadDocument() | 
|  | { | 
|  | var fi=new FileInfo(_worksheetPath + "drawing.xlsx"); | 
|  | if (!fi.Exists) | 
|  | { | 
|  | Assert.Inconclusive("Drawing.xlsx is not created. Skippng"); | 
|  | } | 
|  | var pck = new ExcelPackage(fi, true); | 
|  |  | 
|  | foreach(var ws in pck.Workbook.Worksheets) | 
|  | { | 
|  | foreach(ExcelDrawing d in pck.Workbook.Worksheets[1].Drawings) | 
|  | { | 
|  | if (d is ExcelChart) | 
|  | { | 
|  | TestContext.WriteLine(((ExcelChart)d).ChartType.ToString()); | 
|  | } | 
|  | } | 
|  | } | 
|  | pck.Dispose(); | 
|  | } | 
|  | [TestMethod] | 
|  | [Ignore] | 
|  | public void ReadMultiChartSeries() | 
|  | { | 
|  | ExcelPackage pck = new ExcelPackage(new FileInfo("c:\\temp\\chartseries.xlsx"), true); | 
|  |  | 
|  | var ws = pck.Workbook.Worksheets[1]; | 
|  | ExcelChart c = ws.Drawings[0] as ExcelChart; | 
|  |  | 
|  |  | 
|  | var p = c.PlotArea; | 
|  | p.ChartTypes[1].Series[0].Series = "S7:S15"; | 
|  |  | 
|  | var c2=ws.Drawings.AddChart("NewChart", eChartType.ColumnClustered); | 
|  | var serie1 = c2.Series.Add("R7:R15", "Q7:Q15"); | 
|  | c2.SetSize(800, 800); | 
|  | serie1.Header = "Column Clustered"; | 
|  |  | 
|  | var subChart = c2.PlotArea.ChartTypes.Add(eChartType.LineMarkers); | 
|  | var serie2 = subChart.Series.Add("S7:S15", "Q7:Q15"); | 
|  | serie2.Header = "Line"; | 
|  |  | 
|  | //var subChart2 = c2.PlotArea.ChartTypes.Add(eChartType.DoughnutExploded); | 
|  | //var serie3 = subChart2.Series.Add("S7:S15", "Q7:Q15"); | 
|  | //serie3.Header = "Doughnut"; | 
|  |  | 
|  | var subChart3 = c2.PlotArea.ChartTypes.Add(eChartType.Area); | 
|  | var serie4 = subChart3.Series.Add("R7:R15", "Q7:Q15"); | 
|  | serie4.Header = "Area"; | 
|  | subChart3.UseSecondaryAxis = true; | 
|  |  | 
|  | var serie5 = subChart.Series.Add("R7:R15","Q7:Q15"); | 
|  | serie5.Header = "Line 2"; | 
|  |  | 
|  | pck.SaveAs(new FileInfo("c:\\temp\\chartseriesnew.xlsx")); | 
|  | } | 
|  | [Ignore] | 
|  | [TestMethod] | 
|  | public void ChartWorksheet() | 
|  | { | 
|  | _pck = new ExcelPackage(); | 
|  | var wsChart = _pck.Workbook.Worksheets.AddChart("chart", eChartType.Bubble3DEffect); | 
|  | var ws = _pck.Workbook.Worksheets.Add("data"); | 
|  | AddTestSerie(ws, wsChart.Chart); | 
|  | wsChart.Chart.Style = eChartStyle.Style23; | 
|  | wsChart.Chart.Title.Text = "Chart worksheet"; | 
|  | wsChart.Chart.Series[0].Header = "Serie"; | 
|  | _pck.SaveAs(new FileInfo(@"c:\temp\chart.xlsx")); | 
|  | } | 
|  | [Ignore] | 
|  | [TestMethod] | 
|  | public void ReadChartWorksheet() | 
|  | { | 
|  | _pck = new ExcelPackage(new FileInfo(@"c:\temp\chart.xlsx")); | 
|  | var chart = ((ExcelChartsheet)_pck.Workbook.Worksheets[1]).Chart; | 
|  |  | 
|  | _pck.SaveAs(new FileInfo(@"c:\temp\chart.xlsx")); | 
|  |  | 
|  | } | 
|  | [Ignore] | 
|  | [TestMethod] | 
|  | public void ReadWriteSmoothChart() | 
|  | { | 
|  | _pck = new ExcelPackage(new FileInfo(@"c:\temp\bug\Xds_2014_TEST.xlsx")); | 
|  | var chart = _pck.Workbook.Worksheets[1].Drawings[0] as ExcelChart; | 
|  | _pck.Workbook.Worksheets[1].Cells["B2"].Value = 33; | 
|  | _pck.SaveAs(new FileInfo(@"c:\temp\chart.xlsx")); | 
|  |  | 
|  | } | 
|  | [TestMethod] | 
|  | public void TestHeaderaddress() | 
|  | { | 
|  | _pck = new ExcelPackage(); | 
|  | var ws = _pck.Workbook.Worksheets.Add("Draw"); | 
|  | var chart = ws.Drawings.AddChart("NewChart1",eChartType.Area) as ExcelChart; | 
|  | var ser1 = chart.Series.Add("A1:A2", "B1:B2"); | 
|  | ser1.HeaderAddress = new ExcelAddress("A1:A2"); | 
|  | ser1.HeaderAddress = new ExcelAddress("A1:B1"); | 
|  | ser1.HeaderAddress = new ExcelAddress("A1"); | 
|  | _pck.Dispose(); | 
|  | _pck = null; | 
|  | } | 
|  | [Ignore] | 
|  | [TestMethod] | 
|  | public void AllDrawingsInsideMarkupCompatibility() | 
|  | { | 
|  | string workbooksDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"..\..\workbooks"); | 
|  | // This is codeplex issue 15028: Making an unrelated change to an Excel file that contains drawings that ALL exist | 
|  | // inside MarkupCompatibility/Choice nodes causes the drawings.xml file to be incorrectly garbage collected | 
|  | // when an unrelated change is made. | 
|  | string path = Path.Combine(workbooksDir, "AllDrawingsInsideMarkupCompatibility.xlsm"); | 
|  |  | 
|  | // Load example document. | 
|  | _pck = new ExcelPackage(new FileInfo(path)); | 
|  | // Verify the drawing part exists: | 
|  | Uri partUri = new Uri("/xl/drawings/drawing1.xml", UriKind.Relative); | 
|  | Assert.IsTrue(_pck.Package.PartExists(partUri)); | 
|  |  | 
|  | // The Excel Drawings NamespaceManager from ExcelDrawing.CreateNSM: | 
|  | NameTable nt = new NameTable(); | 
|  | var xmlNsm = new XmlNamespaceManager(nt); | 
|  | xmlNsm.AddNamespace("a", ExcelPackage.schemaDrawings); | 
|  | xmlNsm.AddNamespace("xdr", ExcelPackage.schemaSheetDrawings); | 
|  | xmlNsm.AddNamespace("c", ExcelPackage.schemaChart); | 
|  | xmlNsm.AddNamespace("r", ExcelPackage.schemaRelationships); | 
|  | xmlNsm.AddNamespace("mc", ExcelPackage.schemaMarkupCompatibility); | 
|  |  | 
|  | XmlDocument drawingsXml = new XmlDocument(); | 
|  | drawingsXml.PreserveWhitespace = false; | 
|  | XmlHelper.LoadXmlSafe(drawingsXml, _pck.Package.GetPart(partUri).GetStream()); | 
|  |  | 
|  | // Verify that there are the correct # of drawings: | 
|  | Assert.AreEqual(drawingsXml.SelectNodes("//*[self::xdr:twoCellAnchor or self::xdr:oneCellAnchor or self::xdr:absoluteAnchor]", xmlNsm).Count, 5); | 
|  |  | 
|  | // Make unrelated change. (in this case a useless additional worksheet) | 
|  | _pck.Workbook.Worksheets.Add("NewWorksheet"); | 
|  |  | 
|  | // Save it out. | 
|  | string savedPath = Path.Combine(workbooksDir, "AllDrawingsInsideMarkupCompatibility2.xlsm"); | 
|  | _pck.SaveAs(new FileInfo(savedPath)); | 
|  | _pck.Dispose(); | 
|  |  | 
|  | // Reload the new saved file. | 
|  | _pck = new ExcelPackage(new FileInfo(savedPath)); | 
|  |  | 
|  | // Verify the drawing part still exists. | 
|  | Assert.IsTrue(_pck.Package.PartExists(new Uri("/xl/drawings/drawing1.xml", UriKind.Relative))); | 
|  |  | 
|  | drawingsXml = new XmlDocument(); | 
|  | drawingsXml.PreserveWhitespace = false; | 
|  | XmlHelper.LoadXmlSafe(drawingsXml, _pck.Package.GetPart(partUri).GetStream()); | 
|  |  | 
|  | // Verify that there are the correct # of drawings: | 
|  | Assert.AreEqual(drawingsXml.SelectNodes("//*[self::xdr:twoCellAnchor or self::xdr:oneCellAnchor or self::xdr:absoluteAnchor]", xmlNsm).Count, 5); | 
|  | // Verify that the new worksheet exists: | 
|  | Assert.IsNotNull(_pck.Workbook.Worksheets["NewWorksheet"]); | 
|  | // Cleanup: | 
|  | File.Delete(savedPath); | 
|  | } | 
|  | } | 
|  | } |