簡體   English   中英

互操作-將Excel圖表的范圍設置為整行

[英]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.EntireRowRange.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM