如何将excel互操作图表的源数据设置为几个整行?
我有一个由我的程序创建的.csv
文件,用于显示生成的一些结果。为了简单起见,我们假设这些结果和图表显示如下:(这正是我想要的那样)
现在我遇到的问题是人数是多变的。所以我真的需要访问整行数据。
现在,我这样做:
var range = worksheet.get_range("A1","D3");
xlExcel.ActiveChart.SetSourceData(range);
如果您只有三个Persons
,这会很有效,但我需要访问整行数据。
所以要重述我的问题,如何将我的图表的源数据设置为几个整行?
我尝试查看here,但似乎无法使用行而不是列。
答案 0 :(得分:3)
var range = worksheet.get_range("A1").CurrentRegion;
xlExcel.ActiveChart.SetSourceData(range);
编辑:我假设数据区域中的单元格不是空白的
为了测试这一点,
1)将光标放在单元格A1上
2)按 F5
3)点击“特殊”
4)选择“当前区域”作为选项
5)单击“确定”
这将选择填充的A1周围的单元格,我相信这正是您要找的。 p>
VBA代码中的转换指向CurrentRegion
属性。我认为,这应该有用。
答案 1 :(得分:0)
签出选项Range.EntireRow
我不是100%关于如何将其扩展到包含3个整行的单个范围,但它应该不难实现。
您可以做的另一件事是扫描以获得您需要的实际最大列索引(假设名称中没有间隙),然后在声明范围时使用该索引。
添加代码
int c = 2;//column b
while(true)
{
if (String.IsNullOrEmpty(worksheet.GetRange(1,c).Value2))
{
c--;
break;
}
c++;
}
答案 2 :(得分:0)
从A到D取一列您确定没有空单元格。
执行一些循环以找到该列中的第一个空循环,它将是最后一个循环。
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]]
答案 3 :(得分:0)
此处开箱即用,但为何不转置数据?名称,高度,重量的三列。将其从普通范围转换为表格。
当任何公式(包括图表的SERIES公式引用表的列)时,无论表格获得多长时间,它始终引用该列。添加另一个人(另一行),图表显示添加的人员的数据。删除一些人,图表调整后不会留下空白。
我的教程Easy Dynamic Charts Using Lists or Tables中说明了这一点。