在Excel中如何搜索列中的值并使用c#获得该行中的所有值
本文关键字:何搜索 搜索 Excel | 更新日期: 2023-09-27 18:13:23
我正在尝试搜索列"C"上的值并获得匹配的单元格名称,例如C14,现在我如何选择第14行中的值。
private static MyObject GetRowValue(int rowNumber)
{
string connString = "";
string path = "C:''Code''MyFile.xls";
connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties='"Excel 8.0;HDR=Yes;IMEX=2'"";
string query = "SELECT * FROM [Sheet1$A" + rowNumber + ":BD" + rowNumber + "]";
using (OleDbConnection connection = new OleDbConnection(connString))
{
var adapter = new OleDbDataAdapter(query, connection);
DataSet ds = new DataSet();
adapter.Fill(ds);
DataTable dt = ds.Tables[0];
}
}
如果行号是10,他们我试图获得第10行的所有值,但它返回第10行之后的所有行。
用这个公式:
string query = @"SELECT * FROM [Sheet1$"+ (rowNumber-1) + ":" + (rowNumber) + "]";
如果rowNumber=10,则获取第10行中的所有值。
这有帮助吗?
如果是我,我会让Excel为我做这项工作。你需要Office.Interop.Excel命名空间。
private static ReadRows(string SearchValue, int StartRow)
{
int r = StartRow;
Excel.Application xl = new Excel.Application();
xl.Workbooks.Open(your workbook);
Excel.WorkSheet ws = xl.Workbooks(1).Worksheets(1);
do
{
if(ws.Cells(r,3).value == SearchValue)
{
// read the entire row
string colA = ws.Cells(r,1).value;
string colB = ws.Cells(r,2).value;
//...
// or loop through all columns
int c = 1;
do
{
// add cell value to some collection
c++;
} while (ws.Cells(r,c).Value != "");
}
r++;
} while (ws.Cells(r,3).Value != ""); // 3 because you want column C
}