【问题标题】:C# generate multiple charts in excelC#在excel中生成多个图表
【发布时间】:2014-12-09 19:44:41
【问题描述】:

我想在 Excel 中生成两个图表。这是我生成第一个的代码,然后我想在同一个文档中使用另一个范围再生成一个。

Range chartRange;
ChartObjects xlCharts = (ChartObjects)ws.ChartObjects(Type.Missing);
ChartObject myChart = (ChartObject)xlCharts.Add(10, 80, 300, 250);
Chart chartPage = myChart.Chart;
chartRange = ws.get_Range("A4", "AZ4");
chartPage.ChartType = XlChartType.xlLineMarkers;
chartPage.HasTitle = true;
chartPage.ChartTitle.Text = "Lägenhetstyp 1";
chartPage.HasLegend = false;
chartPage.SetSourceData(chartRange, misValue);
chartPage.ChartType = XlChartType.xlColumnClustered;

类似的东西。

Range chartRange;
//First Chart
ChartObjects xlCharts = (ChartObjects)ws.ChartObjects(Type.Missing);
ChartObject myChart = (ChartObject)xlCharts.Add(10, 80, 300, 250);
Chart chartPage = myChart.Chart;
chartRange = ws.get_Range("A4", "AZ4");
chartPage.ChartType = XlChartType.xlLineMarkers;
chartPage.HasTitle = true;
chartPage.ChartTitle.Text = "Chart 1";
chartPage.HasLegend = false;
chartPage.SetSourceData(chartRange, misValue);
chartPage.ChartType = XlChartType.xlColumnClustered;
//Second chart
ChartObjects xlCharts = (ChartObjects)ws.ChartObjects(Type.Missing);
ChartObject myChart = (ChartObject)xlCharts.Add(10, 80, 300, 250);
Chart chartPage = myChart.Chart;
chartRange = ws.get_Range("A8", "AZ8");
chartPage.ChartType = XlChartType.xlLineMarkers;
chartPage.HasTitle = true;
chartPage.ChartTitle.Text = "Chart 2";
chartPage.HasLegend = false;
chartPage.SetSourceData(chartRange, misValue);
chartPage.ChartType = XlChartType.xlColumnClustered;

【问题讨论】:

  • 您的实际问题是什么?你已经说明你做了什么,但什么不起作用?或者您需要哪些不同的帮助?
  • 问题已解决。解决方法见下文。谢谢你回答我的问题:)
  • 任何人现在我如何定位我的两个图表现在它们最终彼此重叠

标签: c# excel office-interop


【解决方案1】:

我就是这样解决的。

            for (int i = 1; i <= 2; i++)
        {
            Range chartRange;

            ChartObjects xlCharts = (ChartObjects)ws.ChartObjects(Type.Missing);
            ChartObject myChart = (ChartObject)xlCharts.Add(10, 80, 300, 250);
            Chart chartPage = myChart.Chart;
            if (i == 1)
            {
                chartRange = ws.get_Range("A4", "AZ4");
            }
            else
            {
                chartRange = ws.get_Range("A8", "AZ8");
            }
            chartPage.ChartType = XlChartType.xlLineMarkers;
            chartPage.HasTitle = true;
            chartPage.ChartTitle.Text = "Chart " + i;
            chartPage.HasLegend = false;
            chartPage.SetSourceData(chartRange, misValue);
            chartPage.ChartType = XlChartType.xlColumnClustered;
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    相关资源
    最近更新 更多