数组未填充.Split方法

本文关键字:方法 Split 填充 数组 | 更新日期: 2023-09-27 18:20:40

我在获取数组"whyWontYouWork"以填充值时遇到问题。在以下示例中,rangeNames[j]的值为"$A$1:$A$10"。字符串"group"将正确填写为"$A$1:$A$10",但它上面的行显示为"名称'whyWontYouWork'在此上下文中不存在",所以我不知所措,因为它只起过一次作用,当我尝试拆分字符串时,我一无所获。有什么想法吗?

private void CutStates(string[] sheetNames,string[] rangeNames, string[] idNums)
    {
        Excel.Application xlApp = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
        Excel.Workbook wkbk = null;
        wkbk = xlApp.ActiveWorkbook;
        for (int i = 0; i < idNums.Length; i++)
        {
            string stateId = idNums[i];
            for (int j = 0; j < sheetNames.Length; j++)
            {
                string[] sheet = sheetNames[j].Split('!');
                List<string> rowsToDelete = new List<string>();
                List<string> reverseDelete = new List<string>();
                string tabName = sheet[0];
                string[] whyWontYouWork = rangeNames[j].Split(':');
                string group = rangeNames[j];
                Excel.Range range = wkbk.Sheets[tabName].Range[group];
                foreach (Excel.Range cell in range)
                {
                    string val2 = cell.Value.Substring(0, 2);
                    string cellAdd = cell.Address.ToString();
                    if (val2 != stateId)
                    {
                        string delCell = cell.Address.ToString();
                        rowsToDelete.Add(delCell);
                    }
                }
                reverseDelete = rowsToDelete.ToList();
                reverseDelete.Reverse();
                foreach (string item in reverseDelete)
                {
                    Excel.Range delete = wkbk.Sheets[tabName].Range[item];
                    delete.Delete();
                }
            }//j
        }//i
    }

我计划使用第一个部分($A$1)作为从上到下删除的组的起点,使用第二个部分($10)作为从下到上删除的起点。

我想一次迭代一个"组"中的单元格,如果前两个字符与两个字符的stateId不匹配。在这一点上,我移动到下一个,直到我找到一个匹配的,向后移动一行,获取该地址,然后获取列表的开头($A$1),从那里选择不匹配的最后一行,然后删除块。最后一场比赛结束后,我也会这样做(10澳元)。我会一行一行地做,但我在15K行上做,所以一次一个非常慢。我希望这更有意义。

数组未填充.Split方法

从代码来看,您似乎正在遍历工作表(for (int j = 0; j < sheetNames.Length; j++)),因此第一张工作表可能具有rangeNames[j]值("$A$1:$A$10"),而其他工作表则没有。

据我所知,Excel默认情况下会创建3张工作表,所以这可能是问题所在。

感谢你们中的一些人指出没有使用该变量,我检查了我的设置,它正在优化该变量。我以为我已经改变了。添加一个简单的console.writeline(而不是使用Watch)将变量推入使用状态并使其保持不变。