gpt4 book ai didi

c# - 有没有办法在Excel中找到一个范围内的范围?

转载 作者:行者123 更新时间:2023-11-30 17:57:47 24 4
gpt4 key购买 nike

我有一个看起来像这样的 xls 文件:

http://i.stack.imgur.com/d2fux.png

好吧,这就像取决于标题的同一信息,在这种情况下,标题是行 22164,下一个标题是 22178,依此类推。

在 GUI 中,我有一些东西可以让用户从参数中进行选择,并可以根据他们的选择从 xls 文件中加载信息,例如,他们可以选择:

WR | random | 4 | 6 | 15

在这种情况下查找存储在 A22165:O22177 中的信息

我已经有了包含工作簿中所有信息的工作表,我们称该对象为 [,] 'valueArray':

Workbook workBook = _excelApp.Workbooks.Open(censFilePath);
Worksheet sheet = (Worksheet)workBook.Sheets[1];
Range sheetRange = sheet.UsedRange;
object[,] valueArray =
(object[,])sheetRange.get_Value(XlRangeValueDataType.xlRangeValueDefault);

并且我创建了另一个对象,它以与 xls 相同的顺序和格式存储用户的选择。让我们把那个对象[,]叫做'look4it'

我正在尝试找到一种我可以分辨的方法:我想在“valueArray”中找到“look4it”,该方法的答案是 A22164:E22164,这样我就可以计算从“valueArray”复制的范围' 并使用正确的信息。

我试过 Range.Find 但它似乎是在一个范围内寻找一条独特的信息,并返回地址,但我没有发现任何东西可以让我在另一个范围内寻找一个范围的内容.

感谢任何帮助!

最佳答案

我想在这种情况下我会做的是首先构建一个包含每个 header 及其位置的查找列表。对于列表中的键,我会将标题单元格连接在一起以形成一个查找值。因此,在您的代码之后立即进行:

Dictionary<string, int> lookUpList = new Dictionary<string, int>();

// Loop through the rows

for (int i = 0; i < valueArray.GetLength(0); i++)
{
// Identify the header rows

if (valueArray[i, 0].ToString() == "WR")
{
// Concatenate the header strings into a single string

string header = "";

for (int j = 0; j < valueArray.GetLength(1); j++)
{
header += valueArray[i, j].ToString();
}

// Store the header location

lookUpList.Add(header, i + 1);
}
}

请记住,这是即兴的,我还没有测试过。我不确定 Range.get_Value 方法是如何将数据放入数组中的,所以维度可能是错误的。此外,我还假设如何根据您提供的数据图像识别电子表格中的标题行。

无论如何,一旦构造完成,您就可以执行简单的查找以提取标题的行号:

string userSelectedHeader = "concatenation of whatever the user selected";
int rowNumber = lookUpList[userSelectedHeader];

这是否有助于回答您的问题?

关于c# - 有没有办法在Excel中找到一个范围内的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12948392/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com