簡體   English   中英

在C#中循環瀏覽Excel文件

[英]Loop through excel file in c#

我在遍歷Excel文件時遇到問題。 我希望能夠創建一個可以處理多個Excel文件的自動代碼

每個文件中都有一個修復頭,因此“實際”數據從第15行開始。

我正在嘗試使用“ usedRange”,但我不太了解該文檔。

實際上,我有這個:

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+,我不知道為什么。

我認為“ UsedRange”功能存在問題,但不知道為什么。

如何循環文件中的所有行?

另一個選擇是將您的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();

然后,您可以使用諸如

var x = DTset.AsEnumberable().Where( r => r["My Field"].ToString() == "Pick me");

或像普通數據表一樣使用它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM