互操作 – 将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图表使用列表或表格中进行了说明 。