首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C# EPPlus如何用破折号线生成线图

C# EPPlus如何用破折号线生成线图
EN

Stack Overflow用户
提问于 2022-10-27 20:08:53
回答 2查看 61关注 0票数 0

在过去的两天里,我一直在处理EPPlus的一个线图问题。我的目标是创建一个与EPPlus的线状图和线样式将是破折号线,如下图。图片附呈。

我搜索了很多谷歌2天,仍然没有相关提示有破折号在图表中。我不确定在任何EPPlus支持短跑线。我使用的是EPPlus版本6.0和.NET框架版本4.8。这是一个示例代码,在excel表格中用一行生成图表,但我需要这一行将是破折号线。请有人看到我的代码,并告诉我,在我的代码中缺少什么,我不能有破折号线样式的线条图。

代码语言:javascript
运行
复制
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
var newFile = new FileInfo(filepath);
using (ExcelPackage xlPackage = new ExcelPackage(newFile))
{
    ExcelWorksheet worksheet = xlPackage.Workbook.Worksheets.Add("test");
    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;

    //ExcelChart chart = worksheet.Drawings.AddChart("LineChart", eChartType.XYScatterSmooth);
    ExcelChart chart = worksheet.Drawings.AddChart("LineChart", eChartType.XYScatterSmoothNoMarkers);
    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.Axis[0].MinorGridlines.Fill.Color = Color.Red;
    //chart.Axis[0].MinorGridlines.LineStyle = eLineStyle.LongDashDot;
    chart.Axis[0].RemoveGridlines();
    chart.Axis[1].RemoveGridlines();
    chart.Axis[0].Border.LineStyle = eLineStyle.SystemDash;
    //chart.XAxis.Border.LineStyle = eLineStyle.Dash;
    chart.Series[0].Header = "Blah";
    //chart.Series[0].Border.LineStyle = eLineStyle.DashDot;
    //chart.Axis[0].Border.LineStyle = eLineStyle.Dash;
    
    xlPackage.Save();
    MessageBox.Show("Done");
}

我还检查了这个帖子,但无法在代码Office Open XML: Drawing Dashed Line in Chart中实现它。

请把我推向正确的方向,以实现我的目标。提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-10-27 21:49:33

这适用于我和你一样的版本。

您需要为颜色添加对System.Drawing的引用:

代码语言:javascript
运行
复制
// ...(code above this line did not change)

ExcelChart chart = worksheet.Drawings.AddChart("LineChart", eChartType.XYScatterSmoothNoMarkers);
chart.Series.Add(
    ExcelRange.GetAddress(1, 2, worksheet.Dimension.End.Row, 2),
    ExcelRange.GetAddress(1, 1, worksheet.Dimension.End.Row, 1));

chart.Series[0].Header = "Blah";

// Add this:
chart.Series[0].Border.LineStyle = OfficeOpenXml.Drawing.eLineStyle.Dash;
chart.Series[0].Border.Width = 2;
chart.Series[0].Border.Fill.Color = System.Drawing.Color.Blue;

chart.Axis[0].RemoveGridlines();
chart.Axis[1].RemoveGridlines();

xlPackage.Save();

结果:

票数 0
EN

Stack Overflow用户

发布于 2022-11-04 14:31:42

#区域图汇总4 ExcelWorksheet Worksheet4 =p.Workbook.Worksheets.Add(“图(4)”);var summary_Chart_four =Worksheet4.Drawings.AddChart(“图表”,eChartType.LineMarkers);// var summary_Chart_four =Worksheet4.Drawings.AddChart(“图表”,eChartType.XYScatterLines)为ExcelScatterChart;

代码语言:javascript
运行
复制
            //var summary_Chart_four = Worksheet4.Drawings.AddChart("chart", (eChartType)System.Windows.Forms.DataVisualization.Charting.ChartDashStyle.Dash);
            //var summary_Chart_four = myWorksheet.Drawings.AddChart("chart", (eChartType)System.Windows.Forms.DataVisualization.Charting.ChartDashStyle.Dash);
            summary_Chart_four.ShowDataLabelsOverMaximum = true;
            Worksheet4.Cells.Style.Font.Name = "Arial";
            Worksheet4.Cells.Style.Font.Size = 10;
            Worksheet4.Cells.Style.Font.Bold = false;
            loopCnt = 0;
            for (int i = 0; i < (cVM.PeerGroups.Count + cVM.IndexGroups.Count) * 4; i += 4)
            {
                int rowIndex = 10 + i;
                int endRowIndex = 14 + i;
                string startingColumn_series = "C" + rowIndex;
                string endColumn_series = column + rowIndex;
                string lastColumn_xaxis = column + 6;
                int headerRowIndex = 9 + i;
                string seriesHeader = "A" + headerRowIndex;
                var series_i = summary_Chart_four.Series.Add(myWorksheet_summary_data.Cells[startingColumn_series + ":" + endColumn_series], myWorksheet_summary_data.Cells["C6:" + lastColumn_xaxis]);//working
                series_i.Header = myWorksheet_summary_data.Cells[seriesHeader].Value.ToString();
                summary_Chart_four.YAxis.Font.Size = 10;
                summary_Chart_four.XAxis.Font.Size = 10;
                //summary_Chart_four.XAxis.Format =DateTime.Now.Year.ToString();
                summary_Chart_four.YAxis.Format = "$0";

                if (loopCnt == 0)
                {
                    string LineColor = "#000080";
                    series_i.Border.LineStyle = eLineStyle.Solid;
                    //series_i.LineColor = LineColor.ConvertToColor();
                    //series_i.LineWidth = 2.0;
                    //series_i.Marker.Style = eMarkerStyle.Diamond;
                    //series_i.Marker.Size = 8;
                    //string BGColor = "#99ccff";
                    //series_i.Marker.Fill.Color = BGColor.ConvertToColor();
                    //string strBorderColor = "#000080";
                    //series_i.Marker.Border.Fill.Color = strBorderColor.ConvertToColor();
                    ((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).LineColor = LineColor.ConvertToColor();
                    ((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).LineWidth = 2.0;
                    ((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).Marker.Style = eMarkerStyle.Diamond;
                    ((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).Marker.Size = 8;
                    string BGColor = "#99ccff";
                    //((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).Marker.Border.LineCap
                    ((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).Marker.Fill.Color = BGColor.ConvertToColor();
                    string strBorderColor = "#000080";
                    ((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).Marker.Border.Fill.Color = strBorderColor.ConvertToColor();
                    ((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).Marker.Border.Width = 0.75;
                }
                else if (loopCnt == 1)
                {
                    string LineColor = "#003300";
                    series_i.Border.LineStyle = eLineStyle.LongDash;
                    //series_i.LineColor = LineColor.ConvertToColor();
                    //series_i.LineWidth = 2.0;
                    //series_i.Marker.Style = eMarkerStyle.Square;
                    ////((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).Marker.Style = eMarkerStyle.Dash;
                    //series_i.Marker.Size = 7;
                    string BGColor = "#c0c0c0";
                    //series_i.Marker.Fill.Color = BGColor.ConvertToColor();
                    //string strBorderColor = "#003300";
                    //series_i.Marker.Border.Fill.Color = strBorderColor.ConvertToColor();

                    ((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).LineColor = LineColor.ConvertToColor();
                    ((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).LineWidth = 2.0;
                    ((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).Marker.Style = eMarkerStyle.Square;
                    ((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).Marker.Size = 7;
                    //((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).Marker.Border.LineCap
                    ((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).Marker.Fill.Color = BGColor.ConvertToColor();
                    string strBorderColor = "#003300";
                    ((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).Marker.Border.Fill.Color = strBorderColor.ConvertToColor();
                    ((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).Marker.Border.Width = 0.75;

                }

                else if (loopCnt == 2)
                {
                    string LineColor = "#F79646";
                    series_i.Border.LineStyle = eLineStyle.Dot;
                    ////series_i.LineColor = LineColor.ConvertToColor();
                    ////series_i.LineWidth = 2.0;
                    ////series_i.Marker.Style = eMarkerStyle.Circle;
                    //////((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).Marker.Style = eMarkerStyle.Dot;
                    ////series_i.Marker.Size = 8;
                    string BGColor = "#ccffcc";
                    ////series_i.Marker.Fill.Color = BGColor.ConvertToColor();
                    string strBorderColor = "#F79646";
                    ////series_i.Marker.Border.Fill.Color = strBorderColor.ConvertToColor();
                    ((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).LineColor = LineColor.ConvertToColor();
                    ((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).LineWidth = 2.0;
                    ((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).Marker.Style = eMarkerStyle.Circle;
                    ((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).Marker.Size = 8;
                    //((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).Marker.Border.LineCap
                    ((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).Marker.Fill.Color = BGColor.ConvertToColor();
                    ((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).Marker.Border.Fill.Color = strBorderColor.ConvertToColor();

                    ((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).Marker.Border.Width = 0.75;


                }
                else if (loopCnt == 3)
                {
                    string LineColor = "#c0504d";
                    series_i.Border.LineStyle = eLineStyle.LongDashDotDot;
                    ////series_i.LineColor = LineColor.ConvertToColor();
                    ////series_i.LineWidth = 2.0;
                    ////series_i.Marker.Style = eMarkerStyle.Triangle;
                    //////((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).Marker.Style = eMarkerStyle.Dot;
                    ////series_i.Marker.Size = 8;
                    string BGColor = "#c0504d";
                    ////series_i.Marker.Fill.Color = BGColor.ConvertToColor();
                    ((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).LineColor = LineColor.ConvertToColor();
                    ((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).LineWidth = 2.0;
                    ((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).Marker.Style = eMarkerStyle.Triangle;
                    ((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).Marker.Size = 8;
                    //((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).Marker.Border.LineCap
                    ((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).Marker.Fill.Color = BGColor.ConvertToColor();
                    string strBorderColor = "#003300";
                    ((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).Marker.Border.Fill.Color = strBorderColor.ConvertToColor();
                    ((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).Marker.Border.Width = 0.75;

                }

                //else if (loopCnt == 4)
                //{
                //    string LineColor = "#c0504d";
                //    series_i.Border.LineStyle = eLineStyle.LongDashDotDot;
                //    series_i.LineColor = LineColor.ConvertToColor();
                //    series_i.LineWidth = 1.5;
                //    series_i.Marker.Style = eMarkerStyle.Square;
                //    //((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).Marker.Style = eMarkerStyle.Dot;
                //    series_i.Marker.Size = 8;
                //    string BGColor = "#c0504d";
                //    series_i.Marker.Fill.Color = BGColor.ConvertToColor();

                //}
                else
                {
                    ////series_i.LineColor = System.Drawing.Color.Aqua;
                    ////series_i.LineWidth = 1.5;
                    ////series_i.Marker.Style = eMarkerStyle.Circle;
                    ////series_i.Marker.Size = 8;
                    ////series_i.Marker.Fill.Color = System.Drawing.Color.Aqua;
                }
                //series_i.Smooth = eLineStyle.Dash;
                //((OfficeOpenXml.Drawing.Chart.ExcelLineChartSerie)series_i).Series=eChartType.d


                loopCnt++;
            }


            //var series_four = summary_Chart_four.Series.Add(myWorksheet_summary_data.Cells["C10:" + lastColumn_series1], myWorksheet_summary_data.Cells["C6:" + lastColumn_xaxis]);//working
            //series_four.Header = myWorksheet_summary_data.Cells["A9"].Value.ToString();

            //var series_four1 = summary_Chart_four.Series.Add(myWorksheet_summary_data.Cells["C14:" + lastColumn_series2], myWorksheet_summary_data.Cells["C6:" + lastColumn_xaxis]);

            //series_four1.Header = myWorksheet_summary_data.Cells["A13"].Value.ToString();




            summary_Chart_four.Border.Fill.Color = System.Drawing.Color.Black;
            //summary_Chart_four.Title.Text = "Comparison of " + cVM.YearsBack + " Year Cumulative Total Return" + Environment.NewLine + " Assumes Initial Investment of $100" + Environment.NewLine + strMonth + " " + strSelectedDt.Year;
            summary_Chart_four.Title.Text = "COMPARISON OF CUMULATIVE TOTAL RETURN";
            summary_Chart_four.SetSize(960, 600);
            // Add to 6th row and to the 6th column
            summary_Chart_four.Legend.Font.Size = 10;
            ((OfficeOpenXml.Drawing.Chart.ExcelChartStandard)summary_Chart_four).Legend.Font.SetFromFont("Calibri", 11, false, false, false, false);
            ((OfficeOpenXml.Drawing.Chart.ExcelChartStandard)summary_Chart_four).YAxis.Font.SetFromFont("Arial", 10, false, false, false, false);
            ((OfficeOpenXml.Drawing.Chart.ExcelChartStandard)summary_Chart_four).XAxis.Font.SetFromFont("Arial", 10, false, false, false, false);
            ((OfficeOpenXml.Drawing.Chart.ExcelChartStandard)summary_Chart_four).Title.Font.Bold = true;
            ((OfficeOpenXml.Drawing.Chart.ExcelChartStandard)summary_Chart_four).Title.Font.SetFromFont("Calibri", 16, false, false, false, false);
            //summary_Chart_four.Legend.Border.Fill.Color = System.Drawing.Color.Black;
            summary_Chart_four.SetPosition(0, 0, 0, 0);
            summary_Chart_four.XAxis.MajorTickMark = eAxisTickMark.In;
            //summary_Chart.XAxis.MajorTickMark = eAxisTickMark.In;
            summary_Chart_four.XAxis.MinorTickMark = eAxisTickMark.None;
            summary_Chart_four.YAxis.MinorTickMark = eAxisTickMark.None;
            summary_Chart_four.Legend.Position = eLegendPosition.Top;
            summary_Chart_four.YAxis.CrossBetween = eCrossBetween.MidCat;
            summary_Chart_four.XAxis.MajorGridlines.CompoundLineStyle = eCompundLineStyle.Double;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74227773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档