在c#中循环遍历excel文件
本文关键字:excel 文件 遍历 循环 | 更新日期: 2023-09-27 18:06:12
我有一个问题,通过一个excel文件循环。我希望能够创建一个自动代码,将处理多个excel文件
在每个文件中都有一个固定的头,所以"真正的"数据从第15行开始。
我想用"userange",但是我不太理解文档。
实际上,我有这个:
var excel = new Excel.Application();
var wkb = OpenBook(excel, _myExcelFile, true, false, false);
var sheet = wkb.Sheets["B.C"] as Excel.Worksheet;
var usedRange = sheet.UsedRange;
var i = 0;
foreach (Excel.Range row in sheet.UsedRange.Rows)
{
i++;
// I get data like this (for column 2 for example) :
// Convert.ToString(row.Cells[i, 2].Value);
}
问题是,我的excel文件有超过3000+行,但循环只返回1800+,我不知道为什么。
我认为"userange"函数有问题,但不知道原因。
我如何循环所有行在我的文件?
另一种选择是将excel转换为数据表-以下是未经测试的(我在这台PC上没有excel)
System.Data.OleDb.OleDbConnection MyConnection;
System.Data.DataTable DtSet;
System.Data.OleDb.OleDbDataAdapter MyCommand;
MyConnection = new System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='c:''csharp.net-informations.xls';Extended Properties=Excel 8.0;");
MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", MyConnection);
MyCommand.TableMappings.Add("Table", "TestTable");
DtSet = new System.Data.DataTable();
MyCommand.Fill(DtSet);
MyConnection.Close();
你可以在上面做linq操作,比如
var x = DTset.AsEnumberable().Where( r => r["My Field"].ToString() == "Pick me");
或者就像普通的数据表一样使用