c# - c# 中没有网格线的 epplus 图表(它是一个网络应用程序)

标签 c# charts epplus

Graph Without GridLines我正在尝试使用 epplus 和 c# 在 excel 文件中创建图表。 我能够创建图形,我正在尝试删除图形中的网格线,如图所示。我找到了在 Windows 应用程序中执行此操作的解决方案,但我想在 Web 应用程序中执行此操作,下面是我用来生成图形的代码。

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);

我找到了在 Windows 窗体中工作的代码。

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

如何使用 epplus 和 c# 在 “Web 应用程序” 中实现。

最佳答案

更新

我创建了一个 PR,该 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.

原创

奇怪的是,他们没有将其添加为 EPPlus 的选项,因为它只需要基本的 xml 操作。就 EPPlus 而言,Web 或桌面应该没有区别,您只需要删除 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

关于c# - c# 中没有网格线的 epplus 图表(它是一个网络应用程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40804346/

相关文章:

c# - 如何在 LINQ to Entities 中为 Entity Framework 对象使用谓词

java - JavaFX 中的象限散点图?

conditional-formatting - 使用 Epplus 读取电子表格并确定所有单元格的样式,包括有条件的格式

c# - 是否有 .NET 队列类允许一次使多个项目出列?

c# - AutoFixture/AutoMoq 忽略注入(inject)实例/卡住模拟

ios - SciChart IOs 光标和工具提示修饰符

java - MP Android Chart - 如何设置条形图 View 中显示的默认条数?

c# - EPPlus Excel 文件。显示对角线单元格的正确输出

c# - 无法使用 EPPlus 删除表

c# - 为什么 Type 类不在 System.Reflection 命名空间中?