2016-11-25 2 views
2

Graph Without GridLines Я пытаюсь создать диаграмму в файле excel с использованием epplus и C#. Я могу создать график, я пытаюсь удалить линии сетки в графике, как показано на изображениях. Я нашел решение сделать это в приложении Windows, но я хотел сделать это в веб-приложении, ниже приведен код, который я использую для создания графика.диаграммы epplus без линий сетки в C# (его веб-приложение)

ExcelRange erLossesRangeMacInv = worksheet.Cells["G5:G10"]; 
var chartOEE=(ExcelBarChart)worksheetGraph.Drawings.AddChart("barChartOEE", eChartType.ColumnClustered); 
chartOEE.SetSize(300, 300);//Setting size of graph 
chartOEE.SetPosition(10, 10); // position of graph in excel 
chartOEE.Title.Text = "OEE"; 
ExcelRange erLossesRangeOEE = worksheet.Cells["M5:M10"]; 
chartOEE.Style = eChartStyle.Style10; 
chartOEE.Legend.Remove(); 
chartOEE.DataLabel.ShowValue = true; 
chartOEE.YAxis.MaxValue = 100; 
chartOEE.Series.Add(erLossesRangeOEE, erLossesRangeMacInv); 

Я нашел код, который работает в окнах.

chartOEE.ChartAreas["ChartArea1"].AxisX.MajorGrid.Enabled = false; 

Как это сделать в "Веб-приложение" с помощью epplus и C#.

+0

какие изображения? :) – fabersky

+0

Opps, у меня нет достаточного количества точек репутации для загрузки изображений. –

+0

Я добавил ссылку (1-я вещь в моем вопросе), –

ответ

2

UPDATE

Я создал PR, который был принят, что позволяет удалять линии сетки. Если будет в следующем выпуске (всякий раз, когда это) так смотреть на это:

https://epplus.codeplex.com/SourceControl/network/forks/aesalazar/Epplus/contribution/9025

https://github.com/JanKallman/EPPlus/blob/master/EPPlus/Drawing/Chart/ExcelChartAxis.cs#L895

который может быть использован, как это:

axis.RemoveGridlines(); //Removes major and minor 
axis.RemoveGridlines(true, true); //Can choose major or minor with bools. 

ORIGINAL

Странно, что они не добавили это как опцию EPPlus, так как для этого требуется только базовая манипуляция xml. Веб или рабочий стол не должны иметь никакого значения, поскольку EPPlus идет, вам просто нужно удалить ссылки xml. Это следует сделать это:

using (var pck = new ExcelPackage(fileInfo)) 
{ 
    var workbook = pck.Workbook; 
    var worksheet = workbook.Worksheets.Add("Sheet1"); 

    //datatable is just some made up Table object 
    worksheet.Cells.LoadFromDataTable(datatable, true); 

    var chart = worksheet.Drawings.AddChart("chart test", eChartType.XYScatter); 
    var series = chart.Series.Add(worksheet.Cells["B2:B11"], worksheet.Cells["A2:A11"]); 

    //Get reference to the worksheet xml for proper namespace 
    var chartXml = chart.ChartXml; 
    var nsuri = chartXml.DocumentElement.NamespaceURI; 
    var nsm = new XmlNamespaceManager(chartXml.NameTable); 
    nsm.AddNamespace("c", nsuri); 

    //XY Scatter plots have 2 value axis and no category 
    var valAxisNodes = chartXml.SelectNodes("c:chartSpace/c:chart/c:plotArea/c:valAx", nsm); 
    if (valAxisNodes != null && valAxisNodes.Count > 0) 
     foreach (XmlNode valAxisNode in valAxisNodes) 
     { 
      var major = valAxisNode.SelectSingleNode("c:majorGridlines", nsm); 
      if (major != null) 
       valAxisNode.RemoveChild(major); 

      var minor = valAxisNode.SelectSingleNode("c:minorGridlines", nsm); 
      if (minor != null) 
       valAxisNode.RemoveChild(minor); 
     } 

    //Other charts can have a category axis 
    var catAxisNodes = chartXml.SelectNodes("c:chartSpace/c:chart/c:plotArea/c:catAx", nsm); 
    if (catAxisNodes != null && catAxisNodes.Count > 0) 
     foreach (XmlNode catAxisNode in catAxisNodes) 
     { 
      var major = catAxisNode.SelectSingleNode("c:majorGridlines", nsm); 
      if (major != null) 
       catAxisNode.RemoveChild(major); 

      var minor = catAxisNode.SelectSingleNode("c:minorGridlines", nsm); 
      if (minor != null) 
       catAxisNode.RemoveChild(minor); 
     } 

    pck.Save(); 
} 

Что дает это:

enter image description here

+1

Это отлично работает для строк в барах, линиях, столбчатых столбцах. :) –

+0

До сегодняшнего дня до сих пор не включен в EPPLUS v4.1.1.0 – KMC

+0

@KMC 4.1.1 был в основном для патча VBA. Версия 4.5, которая сейчас находится в бета-версии, скорее всего, будет содержать ее. – Ernie

Смежные вопросы