Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EPPlus图表:如何绘制垂直条形图而不是水平默认值_C#_Graph_Bar Chart_Epplus_Epplus 4 - Fatal编程技术网

C# EPPlus图表:如何绘制垂直条形图而不是水平默认值

C# EPPlus图表:如何绘制垂直条形图而不是水平默认值,c#,graph,bar-chart,epplus,epplus-4,C#,Graph,Bar Chart,Epplus,Epplus 4,我遇到了一个关于EPPlus(4.0.1)的问题。我的条形图是水平绘制的,但我希望它是垂直的。我正在尝试更改“chart.Direction”属性,但由于它是只读的,因此出现了一个错误。我也看不到在构造函数中为我的“ExcelBarChart”变量设置变量的方法。抱歉,如果这是一个基本问题,我正在阅读文档,但无法理解。就我所知,方向可能不是正确的属性。我正在用C语言编程。提前感谢您的回答 OfficeOpenXml.Drawing.Chart.ExcelBarChart chart = (Off

我遇到了一个关于EPPlus(4.0.1)的问题。我的条形图是水平绘制的,但我希望它是垂直的。我正在尝试更改“chart.Direction”属性,但由于它是只读的,因此出现了一个错误。我也看不到在构造函数中为我的“ExcelBarChart”变量设置变量的方法。抱歉,如果这是一个基本问题,我正在阅读文档,但无法理解。就我所知,方向可能不是正确的属性。我正在用C语言编程。提前感谢您的回答

OfficeOpenXml.Drawing.Chart.ExcelBarChart chart = (OfficeOpenXml.Drawing.Chart.ExcelBarChart)ws.Drawings.AddChart("barChart", OfficeOpenXml.Drawing.Chart.eChartType.BarClustered);
chart.SetSize(widthPx, heightPx);
chart.SetPosition(startTopPx, startLeftPx);
chart.Title.Text = "Clustered Bar Graph Report";
chart.Direction = eDirection.Column; // error: Property or indexer 'OfficeOpenXml.Drawing.Chart.ExcelBarChart.Direction' cannot be assigned to -- it is read only

ws.Cells["A1"].LoadFromDataTable(data, true); // load dataTable into Cells
int fromRow = 2;
int toRow = 2;
int fromCol = 2;
int toCol = 5;

int xRow = 2;
int xCol = 1;
chart.Series.Add(ExcelRange.GetAddress(fromRow, fromCol, toRow, toCol), 
                                         ExcelRange.GetAddress(xRow, xCol));

我想您应该使用
eChartType.ColumnClustered
而不是
eChartType.BarClustered
,因为方向是在构建时设置的(在源代码处达到峰值)。像这样:

[TestMethod]
public void Vertical_Bar_Chart()
{
    var existingFile = new FileInfo(@"c:\temp\temp.xlsx");
    if (existingFile.Exists)
        existingFile.Delete();

    using (var package = new ExcelPackage(existingFile))
    {
        var workbook = package.Workbook;
        var ws = workbook.Worksheets.Add("newsheet");

        //Some data
        ws.Cells["A12"].Value = "wer";
        ws.Cells["A13"].Value = "sdf";
        ws.Cells["A14"].Value = "wer";
        ws.Cells["A15"].Value = "ghgh";

        ws.Cells["B12"].Value = 53;
        ws.Cells["B13"].Value = 36;
        ws.Cells["B14"].Value = 43;
        ws.Cells["B15"].Value = 86;

        //Create the chart
        var chart = (ExcelBarChart)ws.Drawings.AddChart("barChart", eChartType.ColumnClustered);
        chart.SetSize(300 ,300);
        chart.SetPosition(10,10);
        chart.Title.Text = "Clustered Bar Graph Report";
        //chart.Direction = eDirection.Column; // error: Property or indexer 'OfficeOpenXml.Drawing.Chart.ExcelBarChart.Direction' cannot be assigned to -- it is read only

        chart.Series.Add(ExcelRange.GetAddress(12, 2, 15, 2), ExcelRange.GetAddress(12, 1, 15, 1));

        package.Save();

    }
}

我知道我遗漏了一些简单的东西。谢谢您好,这是我的作品,您能解释一下这个折线图.Series.Add(ExcelRange.GetAddress(12,2,15,2),ExcelRange.GetAddress(12,1,15,1));我得到了第一个GetAddress GetAddress(fromRow,fromCol,toRow,toCol)bt第二个是什么one@SreepathySp
GetAddress
只是将数字范围转换为其字符串表示形式。因此,如果要调试该行,您将看到它调用
chart.Series.Add(“B12:B15”,“A12:A15”)
,其中第一个字符串是图表的Y轴,第二个字符串是X轴。另一种方法是直接引用工作表单元格,如
chart.Series.Add(worksheet.cells[12,2,15,2],worksheet.cells[12,1,15,1])
。thnks ernie,1更多帮助,如何更改条形图颜色,因为我必须使用2个选项卡和2个不同的条形图来区分这两种颜色them@SreepathySp这有点复杂。看看这是否有帮助: