【问题标题】:editing excel chart data range by c#用c#编辑excel图表数据范围
【发布时间】:2011-03-22 09:00:39
【问题描述】:

我正在尝试使用 Microsoft.Office.Interop.Excel 创建一个 Excel 散点图。 我有 2 个数据范围

 Range chartRange1 = xlWorkSheet.Range["A1", "B5"];
 Range chartRange2 = xlWorkSheet.Range["A6", "B10"];

为 2 组点。 “A”列指定 x 坐标,“B”列指定 y 坐标。 当我以这种方式创建图表时:

        chartPage.ChartType = Excel.XlChartType.xlXYScatter;

        var seriesCol = chartPage.SeriesCollection(misValue);

        seriesCol.add(chartRange1, misValue, misValue, misValue, misValue);
        seriesCol.add(chartRange2, misValue, misValue, misValue, misValue);

我得到 4 组点,x 坐标从 1 到 5,y 坐标由范围 A1 - A5、B1 - B5、A6 - A10、B6 - B10 指定。

如何让图表包含 2 组点,其中 x 坐标定义在“A”列,y 坐标定义在“B”列?

谢谢!

【问题讨论】:

    标签: excel c#-4.0


    【解决方案1】:

    你必须把它从 VBA 翻译成你自己的语法。

    SeriesCollection对象的Add方法如下:

    Function Add(Source, [Rowcol As XlRowCol = xlColumns], 
    [SeriesLabels], [CategoryLabels], [Replace]) As Series
    

    您只想添加一个系列,而不是像您所做的那样添加两个。因此,您需要根据两个范围的并集来定义一个范围。在 VBA 中:

    Set ChartRange = Union(ChartRange1, ChartRange2)
    

    那么您可能可以使用(在您的语法中)

    seriesCol.add(chartRange, misValue, misValue, True, misValue);
    

    我使用 True 作为 CategoryLabels 的值来尝试强制 Excel 将第一列用作 X 值。

    有时在带有新图表的 VBA 中,它不能完全正确地工作。在这种情况下,您需要使用 Y 值添加系列,然后应用 X 值。第一行是你的语法,第二行是纯 VBA。

    seriesCol.add(chartRange2, misValue, misValue, misValue, misValue);
    
    seriesCol(1).XValues = ChartRange1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多