Skip to content

Commit

Permalink
Added pull requests...
Browse files Browse the repository at this point in the history
Fix MONO Uri parsing error
Added support for Axis Gridlines.
  • Loading branch information
JanKallman committed Jul 10, 2017
1 parent 2e66cd6 commit 73102fd
Show file tree
Hide file tree
Showing 5 changed files with 127 additions and 7 deletions.
78 changes: 76 additions & 2 deletions EPPlus/Drawing/Chart/ExcelChartAxis.cs
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ internal enum eAxisType
internal ExcelChartAxis(XmlNamespaceManager nameSpaceManager, XmlNode topNode) :
base(nameSpaceManager, topNode)
{
SchemaNodeOrder = new string[] { "axId", "scaling", "logBase", "orientation", "max", "min", "delete", "axPos", "majorGridlines", "title", "numFmt", "majorTickMark", "minorTickMark", "tickLblPos", "spPr", "txPr", "crossAx", "crossesAt", "crosses", "crossBetween", "auto", "lblOffset", "majorUnit", "majorTimeUnit", "minorUnit", "minorTimeUnit", "dispUnits", "spPr", "txPr" };
SchemaNodeOrder = new string[] { "axId", "scaling", "logBase", "orientation", "max", "min", "delete", "axPos", "majorGridlines", "minorGridlines", "title", "numFmt", "majorTickMark", "minorTickMark", "tickLblPos", "spPr", "txPr", "crossAx", "crossesAt", "crosses", "crossBetween", "auto", "lblOffset", "majorUnit", "majorTimeUnit", "minorUnit", "minorTimeUnit", "dispUnits", "spPr", "txPr" };
}
internal string Id
{
Expand Down Expand Up @@ -819,7 +819,7 @@ public double? LogBase
}
const string _orientationPath = "c:scaling/c:orientation/@val";
/// <summary>
///
/// Axis orientation
/// </summary>
public eAxisOrientation Orientation
{
Expand All @@ -843,5 +843,79 @@ public eAxisOrientation Orientation
}
}
#endregion

#region GridLines
//Pull request from aesalazar
const string _majorGridlinesPath = "c:majorGridlines";
        ExcelDrawingBorder _majorGridlines = null;

        /// <summary>
        /// Major Gridlines for the Axis
        /// </summary>
        public ExcelDrawingBorder MajorGridlines
        {
get
            {
                if (_majorGridlines == null)
                {
                    var node = TopNode.SelectSingleNode(_majorGridlinesPath, NameSpaceManager);
                    if (node == null)
CreateNode(_majorGridlinesPath);

                    _majorGridlines = new ExcelDrawingBorder(NameSpaceManager, TopNode,$"{_majorGridlinesPath}/c:spPr/a:ln");
                }
                return _majorGridlines;
            }
        }

        const string _minorGridlinesPath = "c:minorGridlines";
        ExcelDrawingBorder _minorGridlines = null;

        /// <summary>
        /// Minor Gridlines for the Axis
        /// </summary>
        public ExcelDrawingBorder MinorGridlines
        {
            get
            {
                if (_minorGridlines == null)
                {
                    var node = TopNode.SelectSingleNode(_minorGridlinesPath, NameSpaceManager);
                    if (node == null)
CreateNode(_minorGridlinesPath);

                    _minorGridlines = new ExcelDrawingBorder(NameSpaceManager, TopNode,$"{_minorGridlinesPath}/c:spPr/a:ln");
                }
                return _minorGridlines;
            }
        }
        /// <summary>
        /// Removes Major and Minor gridlines from the Axis
        /// </summary>
        public void RemoveGridlines()
        {
RemoveGridlines(true,true);
        }

        /// <summary>
        /// Removes gridlines from the Axis
        /// </summary>
        /// <param name="removeMajor">Indicates if the Major gridlines should be removed</param>
        /// <param name="removeMinor">Indicates if the Minor gridlines should be removed</param>
        public void RemoveGridlines(bool removeMajor, bool removeMinor)
        {
            if (removeMajor)
            {
DeleteNode(_majorGridlinesPath);
                _majorGridlines = null;
            }

            if (removeMinor)
            {
DeleteNode(_minorGridlinesPath);
                _minorGridlines = null;
            }
        }
        #endregion
}
}
8 changes: 6 additions & 2 deletions EPPlus/ExcelWorksheet.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1239,6 +1239,7 @@ private void LoadCells(XmlTextReader xr)
}
if (xr.LocalName == "row")
{
col = 0;
var r = xr.GetAttribute("r");
if (r == null)
{
Expand Down Expand Up @@ -3163,10 +3164,13 @@ private void SaveTables()
{
int fromRow = tbl.ShowHeader ? tbl.Address._fromRow + 1 : tbl.Address._fromRow;
int toRow = tbl.ShowTotal ? tbl.Address._toRow - 1 : tbl.Address._toRow;
string r1c1Formula = ExcelCellBase.TranslateToR1C1(col.CalculatedColumnFormula, fromRow, colNum);
bool needsTranslation = r1c1Formula != col.CalculatedColumnFormula;

for (int row = fromRow; row <= toRow; row++)
{
SetFormula(row, colNum, col.CalculatedColumnFormula);
}
SetFormula(row, colNum, needsTranslation ? ExcelCellBase.TranslateFromR1C1(r1c1Formula, row, colNum) : r1c1Formula);
}
}
colNum++;
}
Expand Down
2 changes: 1 addition & 1 deletion EPPlus/Utils/UriHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ internal class UriHelper
{
internal static Uri ResolvePartUri(Uri sourceUri, Uri targetUri)
{
if(targetUri.OriginalString.StartsWith("/"))
if (targetUri.OriginalString.StartsWith("/") || targetUri.OriginalString.Contains("://"))
{
return targetUri;
}
Expand Down
37 changes: 37 additions & 0 deletions EPPlusTest/Drawing/Chart/ExcelChartAxisTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -65,5 +65,42 @@ public void MaxValue_SetTo1EMinus6_Is1EMinus6()
axis.MaxValue = 1.2e-6;
Assert.AreEqual(axis.MaxValue, 1.2e-6);
}
[TestMethod]
        public void Gridlines_Set_IsNotNull()
        {
            var major = axis.MajorGridlines;
            Assert.IsTrue(axis.ExistNode("c:majorGridlines"));

            var minor = axis.MinorGridlines;
            Assert.IsTrue(axis.ExistNode("c:minorGridlines"));
        }

        [TestMethod]
        public void Gridlines_Remove_IsNull()
        {
            var major = axis.MajorGridlines;
            var minor = axis.MinorGridlines;

            axis.RemoveGridlines();

            Assert.IsFalse(axis.ExistNode("c:majorGridlines"));
            Assert.IsFalse(axis.ExistNode("c:minorGridlines"));

            major = axis.MajorGridlines;
            minor = axis.MinorGridlines;

            axis.RemoveGridlines(true, false);

            Assert.IsFalse(axis.ExistNode("c:majorGridlines"));
            Assert.IsTrue(axis.ExistNode("c:minorGridlines"));

            major = axis.MajorGridlines;
            minor = axis.MinorGridlines;

            axis.RemoveGridlines(false, true);

            Assert.IsTrue(axis.ExistNode("c:majorGridlines"));
            Assert.IsFalse(axis.ExistNode("c:minorGridlines"));
        }
}
}
9 changes: 7 additions & 2 deletions EPPlusTest/DrawingTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -510,6 +510,9 @@ public void Line()
chrt.Smooth = false;
chrt.Title.Text = "Line 3D";
chrt.Series[0].Header = "Line serie 1";
chrt.Axis[0].MajorGridlines.Fill.Color = Color.Black;
chrt.Axis[0].MajorGridlines.LineStyle = eLineStyle.Dot;

var tl = chrt.Series[0].TrendLines.Add(eTrendLine.Polynomial);
tl.Name = "Test";
tl.DisplayRSquaredValue = true;
Expand All @@ -519,7 +522,7 @@ public void Line()
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;
Expand Down Expand Up @@ -676,7 +679,9 @@ public void Line2Test()
ExcelRange.GetAddress(1, 1, worksheet.Dimension.End.Row, 1));

var Series = chart.Series[0];

chart.Axis[0].MinorGridlines.Fill.Color = Color.Red;
chart.Axis[0].MinorGridlines.LineStyle = eLineStyle.LongDashDot;

chart.Series[0].Header = "Blah";
}
//[TestMethod]
Expand Down

0 comments on commit 73102fd

Please sign in to comment.