blob: 3d82e5ddcabcae854d374cf8618d5a08b2de0564 [file] [log] [blame]
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);
}
}
}