C# 互操作-将Excel图表的范围设置为整行
如何将excel互操作图表的源数据设置为整行 我有一个C# 互操作-将Excel图表的范围设置为整行,c#,excel,interop,C#,Excel,Interop,如何将excel互操作图表的源数据设置为整行 我有一个.csv文件,该文件由我的程序创建,用于显示生成的一些结果。为了简单起见,假设这些结果和图表是这样显示的:(这正是我想要的) 现在我遇到的问题是人数是可变的。所以我真的需要访问整行数据 现在,我正在这样做: var range = worksheet.get_range("A1","D3"); xlExcel.ActiveChart.SetSourceData(range); 如果你只有三个人的话,这很有用,但是我需要访问整行数据 因此
.csv
文件,该文件由我的程序创建,用于显示生成的一些结果。为了简单起见,假设这些结果和图表是这样显示的:(这正是我想要的)
现在我遇到的问题是人数是可变的。所以我真的需要访问整行数据
现在,我正在这样做:
var range = worksheet.get_range("A1","D3");
xlExcel.ActiveChart.SetSourceData(range);
如果你只有三个人的话,这很有用,但是我需要访问整行数据
因此,重申我的问题,我如何将图表的源数据设置为整行
我试图查找,但似乎无法使用行而不是列 查看选项
Range.EntireRow
我不是100%了解如何将其扩展到包含3整行的单个范围,但这应该不难实现
您可以做的另一件事是扫描以获得所需的实际最大列索引(这是假设名称中保证没有间隙),然后在声明范围时使用该索引
添加代码
int c = 2;//column b
while(true)
{
if (String.IsNullOrEmpty(worksheet.GetRange(1,c).Value2))
{
c--;
break;
}
c++;
}
查看选项
Range.EntireRow
我不是100%了解如何将其扩展到包含3整行的单个范围,但这应该不难实现
您可以做的另一件事是扫描以获得所需的实际最大列索引(这是假设名称中保证没有间隙),然后在声明范围时使用该索引
添加代码
int c = 2;//column b
while(true)
{
if (String.IsNullOrEmpty(worksheet.GetRange(1,c).Value2))
{
c--;
break;
}
c++;
}
从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;
然后可以得到范围[Sheet.Cells[1,1],Sheet.Cells[LastLine,4]]从a到D取一列,确保没有空单元格
var range = worksheet.get_range("A1").CurrentRegion;
xlExcel.ActiveChart.SetSourceData(range);
执行一些循环以查找该列中的第一个空值,它将是最后一个空值之后的一个空值
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;
然后可以得到范围[Sheet.Cells[1,1],Sheet.Cells[LastLine,4]]
var range = worksheet.get_range("A1").CurrentRegion;
xlExcel.ActiveChart.SetSourceData(range);
编辑:我假设数据区域中的单元格不会为空。要测试这一点,
1) 将光标放在单元格A1上
2) 按F5键
3) 单击“特殊”
4) 选择“当前区域”作为选项
5) 单击“确定” 这将选择A1周围填充的单元格,我相信这就是您要寻找的 VBA代码中的转换指向
CurrentRegion
属性。我想,这应该行得通
编辑:我假设数据区域中的单元格不会为空。要测试这一点,
1) 将光标放在单元格A1上
2) 按F5键
3) 单击“特殊”
4) 选择“当前区域”作为选项
5) 单击“确定” 这将选择A1周围填充的单元格,我相信这就是您要寻找的
VBA代码中的转换指向
CurrentRegion
属性。我想,这应该行。开箱即用,但为什么不转换数据呢?名称、高度、重量三列。将其从普通范围转换为表格
当任何公式(包括图表的系列公式)引用表中的一列时,无论该表有多长,它都会引用该列。添加其他人员(另一行),图表将显示添加人员的数据。去掉几个人,图表就会调整,最后不留空格
这在我的教程中有说明,.这里是开箱即用的,但是为什么不转置数据呢?名称、高度、重量三列。将其从普通范围转换为表格 当任何公式(包括图表的系列公式)引用表中的一列时,无论该表有多长,它都会引用该列。添加其他人员(另一行),图表将显示添加人员的数据。去掉几个人,图表就会调整,最后不留空格
这在我的教程中有说明。尝试这个链接,它实际上是在谈论
行
@Jordan:看看当前区域
属性是否有帮助,如下所述。尝试这个链接,它实际上是在谈论行
@Jordan:看看当前区域
属性是否有帮助,如下所述。是的+1为简单起见。谢谢大家!@乔丹卡罗尔:谢谢。我很高兴能帮上忙。是的+1为简单起见。谢谢大家!@乔丹卡罗尔:谢谢。我很高兴能帮上忙。