C# 如何获取范围的单元格列
为了在单元格内容中找到一个特定的单词,我在一个区域中得到一行,然后我想得到我找到它的列。例如,如果我在第19位找到了所需的内容,则表示excel列的值为“S” 以下是我目前使用的代码:C# 如何获取范围的单元格列,c#,excel,excel-interop,C#,Excel,Excel Interop,为了在单元格内容中找到一个特定的单词,我在一个区域中得到一行,然后我想得到我找到它的列。例如,如果我在第19位找到了所需的内容,则表示excel列的值为“S” 以下是我目前使用的代码: Excel.Worksheet xlWorkSheet = GetWorkSheet(currentWorkBook, "sheet"); var row = xlWorkSheet.Rows["5"]; int rowLength = xlWorkSheet.UsedRange.Columns.Count; E
Excel.Worksheet xlWorkSheet = GetWorkSheet(currentWorkBook, "sheet");
var row = xlWorkSheet.Rows["5"];
int rowLength = xlWorkSheet.UsedRange.Columns.Count;
Excel.Range currentTitle = row[1]; //in order to iterate only over the 5th row in this example
for (int i = 1; i < rowLength; i++)
{
string title = currentTitle.Value2[1,i];
if (title == null)
{
continue;
}
if (title.Contains(wordToSearch))
{
string column = THIS IS THE QUESTION - WHAT DO I NEED TO WRITE HERE?
Excel.Range valueCell = xlWorkSheet.Range[column + "5"];
return valueCell.Value2;
}
Excel.Worksheet xlWorkSheet=GetWorkSheet(当前工作簿,“工作表”);
var row=xlsheet.Rows[“5”];
int rowLength=xlsheet.UsedRange.Columns.Count;
Excel.Range currentTitle=行[1]//为了在本例中仅迭代第5行
for(int i=1;i
请注意
string column
行,我需要在其中添加代码。如果您不想依赖任何计算,我看到的另一个选项是从Address
属性提取列字母,如下代码所示:
Excel.Range currentRange = (Excel.Range)currentTitle.Cells[1, i];
string columnLetter = currentRange.get_AddressLocal(true, false, Excel.XlReferenceStyle.xlA1, missing, missing).Split('$')[0];
string title = null;
if (currentRange.Value2 != null)
{
title = currentRange.Value2.ToString();
}
如你所见,我强制使用“$”出现以便于列字母检索。是否需要从数字到列名的转换?@SergeyKucher,前提是没有我不知道的范围属性,该范围提供了单元格的列。应该有这种属性听起来很简单。我不知道:
string column=((char)('A'+yourNumber-1)).ToString();
…或者是获取适用于普通字母的19
?@Corak的问题。我们谈论的是excel单元格,例如第28位是“AB”.我不限于26岁numbers@pnuts这确实是一个解决方案,我在发布这个问题之前看到了它,但我试图避免它,因为我打赌只有一个属性可以通过列名获得