互操作 – 将Excel图表的范围设置为整行

如何将excel互操作图的源数据设置为几行?

我有一个.csv文件是由我的程序创build的,显示一些生成的结果。 为了简单起见,让我们说这些结果和图表是这样显示的:(这正是我想要的)

在这里输入图像说明

现在我遇到的问题是人数是可变的。 所以我真的需要访问整个行数据。

现在,我正在这样做:

 var range = worksheet.get_range("A1","D3"); xlExcel.ActiveChart.SetSourceData(range); 

如果你只有三Persons ,这很好,但我需要访问整行数据。

所以要重申我的问题,我怎样才能将我的图表的源数据设置为几个完整的行?


我试着在这里看,但似乎无法使行而不是列的工作。

 var range = worksheet.get_range("A1").CurrentRegion; xlExcel.ActiveChart.SetSourceData(range); 

编辑:我假设数据区域中的单元格将不会为空。
为了testing这个,
1)将光标放在单元格A1上
2)按F5
3)点击“特殊”
4)select“当前区域”作为选项
5)点击“确定”

这将select周围A1填充的细胞,我相信这是你正在寻找。

在VBA代码中的翻译指向CurrentRegion属性。 我认为,这应该工作。

检查出选项Range.EntireRow我不是100%如何扩展到一个单一的范围包含3整行,但它不应该是很难完成。

你可以做的另一件事是扫描,以获得你需要的实际最大列索引(这是假设名称中保证没有差距),然后使用该索引,因为你声明你的范围。

添加代码

 int c = 2;//column b while(true) { if (String.IsNullOrEmpty(worksheet.GetRange(1,c).Value2)) { c--; break; } c++; } 

从A到D列,你肯定没有空单元格。

做一些循环find那个列中的第一个空的,它将是最后一个。

 Range Cell = SHeet.Range["A1"]; //or another column you're sure there's no empty data int LineOffset = 0; while (Cell.Offset[LineOffset, 0].Value != "") //maybe you should cast the left side to string, not sure. { LineOffset++; } int LastLine = LineOffset - 1; 

然后你可以得到Range [Sheet.Cells [1,1],Sheet.Cells [LastLine,4]]

开箱即用,但为什么不转置数据呢? 名称,高度,重量的三列。 将其从普通范围转换为表格。

当任何公式(包括图表的SERIES公式引用表的列)时,总是引用该列,而不pipe表得到多长时间。 添加另一个人(另一行),图表显示添加人员的数据。 移除几个人,最后调整图表而不留空白。

这在我的教程, 简单dynamic图表使用列表或表格中进行了说明 。