已知文件夹路径,文件夹里有多个Excel表格,表格中有大量数据,不知道数据在哪个表格中,使用C#遍历表格查找指定行与列对应的数据
时间: 2024-02-23 19:02:59 浏览: 157
可以使用C#中的.NET库来操作Excel表格,以下是一个示例代码,可以遍历指定文件夹下的所有Excel表格,查找指定行与列对应的数据:
```csharp
using System;
using System.IO;
using System.Data;
using System.Data.OleDb;
string folderPath = "C:\\ExcelFiles\\";
int rowIndex = 3; //第4行
int colIndex = 2; //第3列
string[] fileEntries = Directory.GetFiles(folderPath, "*.xlsx");
foreach (string fileName in fileEntries)
{
string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1;'";
OleDbConnection connection = new OleDbConnection(connectionString);
connection.Open();
DataTable table = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
string sheetName = table.Rows[0]["TABLE_NAME"].ToString();
OleDbCommand command = new OleDbCommand("SELECT * FROM [" + sheetName + "]", connection);
OleDbDataAdapter adapter = new OleDbDataAdapter(command);
DataSet dataSet = new DataSet();
adapter.Fill(dataSet);
foreach (DataTable dt in dataSet.Tables)
{
foreach (DataRow row in dt.Rows)
{
string data = row[colIndex - 1].ToString(); //注意数组下标从0开始,所以要减1
if (data == "要查找的数据")
{
Console.WriteLine("数据在表格" + fileName + "的" + sheetName + "工作表的第" + (dt.Rows.IndexOf(row) + 1) + "行第" + colIndex + "列");
connection.Close();
return; //找到数据后直接退出
}
}
}
connection.Close();
}
Console.WriteLine("未找到数据");
```
这段代码中,我们首先指定了文件夹路径、要查找的行列索引以及要查找的数据。然后使用Directory.GetFiles方法获取指定文件夹下的所有Excel表格,使用OleDbConnection连接Excel文件,并使用OleDbDataAdapter将数据填充到DataSet中。接着,使用双重循环遍历DataSet中的所有表格和行,查找指定的数据。如果找到了数据,输出数据所在的表格、工作表、行和列信息,并退出程序。
需要注意的是,这段代码同样使用了Microsoft ACE OLEDB 12.0驱动程序,需要在计算机上安装Access Database Engine才能正常运行。此外,还需要在Excel文件的第一行设置列名,才能通过列名来引用数据。
阅读全文