[英]Interop - Setting a range for an Excel chart to an entire row
如何將excel互操作圖表的源數據設置為幾整行?
我有一個.csv
文件,該文件是由我的程序創建的,用於顯示產生的某些結果。 為了簡單起見,假設這些結果和圖表顯示如下:(這正是我想要的樣子)
現在我遇到的問題是人數是可變的。 因此,我確實需要訪問整個行的數據。
現在,我正在這樣做:
var range = worksheet.get_range("A1","D3");
xlExcel.ActiveChart.SetSourceData(range);
如果您只有三個Persons
,那么這很好用,但是我需要訪問整行數據。
因此,要重申我的問題, 如何將圖表的源數據設置為幾整行?
我嘗試在這里查看,但似乎無法通過行而不是列來實現。
var range = worksheet.get_range("A1").CurrentRegion;
xlExcel.ActiveChart.SetSourceData(range);
編輯:我假設數據區域中的單元格將不為空。
為了測試這個
1)將光標放在單元格A1上
2)按F5
3)點擊“特殊”
4)選擇“當前區域”作為選項
5)點擊“確定”
這將選擇A1周圍已填充的單元格,我相信這是您要尋找的單元格。
VBA代碼中的翻譯指向CurrentRegion
屬性。 我認為,這應該可行。
Range.EntireRow
出Range.EntireRow
選項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;
然后,您可以獲得Range [Sheet.Cells [1,1],Sheet.Cells [LastLine,4]]
開箱即用,但是為什么不轉置數據呢? 三列分別是名稱,高度,重量。 將其從普通范圍轉換為表格。
當任何公式(包括圖表的SERIES公式)引用表的一列時,無論表獲得多長時間,它始終引用該列。 添加另一個人(另一行),圖表將顯示添加的人的數據。 刪除幾個人,圖表將進行調整,並且最后不留空白。
這在我的教程《 使用列表或表格的輕松動態圖表》中得到了說明。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.