亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何獲取創建的對象“單元格”的范圍?

如何獲取創建的對象“單元格”的范圍?

C#
森欄 2023-07-22 18:15:29
我正在 Visual Studio 中設置一個 26x26 電子表格程序。我創建了一個cell繼承 textbox 但還包含一個 property 的對象cellID。現在我創建了一個selectedRange文本框,允許用戶輸入將執行公式(例如:Sum)的范圍(例如:“A1:A9”)。我想獲取輸入的范圍并找到一種算術上使用它的方法。我想也許我可以使用Split()帶有 a':'和','分隔符的方法,但我不知道如何構建它以便在我的代碼中使用。程序截圖:private void btn_sum_Click(object sender, EventArgs e){    int rows = 0;    int columns = 0;     string[] cells = txt_selectedRange.Text.Split(':',',');}
查看完整描述

1 回答

?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

在Excel中,您可以擁有像這樣的復雜范圍字符串:“D6:F11,I6:I9,J14,N10,P5:Q9”,因此首先您需要用“,”分割,然后對于每個包含“:”的子字符串,您需要獲取單元格的子范圍。


Hear 是一種獲取范圍字符串、解析它并返回單元格字符串列表的方法:


private static List<string> GetCellStrings(string cellRange)

{

    // Cell string to return from this method.

    List<string> cells = new List<string>();


    // Remove whitespace.

    cellRange = cellRange.Replace(" ", "").Trim();


    // First split by ',' to get subranges

    string[] subranges = cellRange.Split(',');


    // Iterate over subranges

    for (int i = 0; i < subranges.Length; i++)

    {

        string range = subranges[i];


        // If the subrange contains a ':', calculate all range cells

        if (range.Contains(':'))

        {

            string[] rangeBounds = range.Split(':');

            char lowerBoundLetter = rangeBounds[0][0];

            char upperBoundLetter = rangeBounds[1][0];

            int lowerBoundNumber = int.Parse(rangeBounds[0].Substring(1));

            int upperBoundNumber = int.Parse(rangeBounds[1].Substring(1));


            for (char columnLetter = lowerBoundLetter; columnLetter <= upperBoundLetter; columnLetter++)

            {

                for (int rowNumber = lowerBoundNumber; rowNumber <= upperBoundNumber; rowNumber++)

                {

                    string cell = columnLetter.ToString() + rowNumber.ToString();

                    cells.Add(cell);

                }

            }

        }

        // If the subrange does not contain a ':', it's a single cell, add it to the list of cells

        else

        {

            cells.Add(range);

        }

    }


    return cells;

}

注意:此代碼僅適用于 26 列 - A 到 Z。


例子:


string cellRange = "D6:F11,I6:I9,J14,N10,P5:Q9";


List<string> cells = GetCellStrings(cellRange);


for (int i = 0; i < cells.Count; i++)

{

    Console.WriteLine(cells[i]);

}

輸出:


D6

D7

D8

D9

D10

D11

E6

E7

E8

E9

E10

E11

F6

F7

F8

F9

F10

F11

I6

I7

I8

I9

J14

N10

P5

P6

P7

P8

P9

Q5

Q6

Q7

Q8

Q9


查看完整回答
反對 回復 2023-07-22
  • 1 回答
  • 0 關注
  • 140 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號