如何通过单元格值查找列编号?

4

我有一个巨大的Excel文件,希望找到后面要使用的“ID”列。第一行为空,标题行在第二行。

int ID_Number = ((Range)sheet.get_Range("A2", sheet.UsedRange.Columns.Count).Find("ID Number", Missing.Value, XlFindLookIn.xlValues, XlLookAt.xlPart, XlSearchOrder.xlByColumns, XlSearchDirection.xlNext, true, Missing.Value, Missing.Value) ).Column;
int Size = ((Range)sheet.get_Range("A2", sheet.UsedRange.Columns.Count).Find("Size", Missing.Value, XlFindLookIn.xlValues, XlLookAt.xlPart, XlSearchOrder.xlByColumns, XlSearchDirection.xlNext, true, Missing.Value, Missing.Value) ).Column;

未处理的异常:System.Runtime.InteropServices.COMException: 来自 HRESULT 的异常:0x800A03EC

有时,Excel 中的列顺序会发生变化,希望动态处理它,而不是通过定义 M 列来处理大小。

1个回答

5
这是您正在尝试的吗?(在VS 2010 + Excel 2010中已经尝试并测试过)
object misValue = System.Reflection.Missing.Value;

Microsoft.Office.Interop.Excel.Range xlRange = xlWorkSheet.get_Range("A2", "A2");

Microsoft.Office.Interop.Excel.Range xlFound = xlRange.EntireRow.Find("ID Number",
misValue, Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart,
Excel.XlSearchOrder.xlByColumns, Excel.XlSearchDirection.xlNext, 
true, misValue, misValue);

//~~> Check if a range was returned
if (!(xlFound == null))
{
    int ID_Number = xlFound.Column;
    MessageBox.Show(ID_Number.ToString());
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接