簡體   English   中英

我如何遍歷Excel文件

[英]How can I iterate over an excel file

如何遍歷Excel文件?

我目前有一個使用ExcelDataReader的類

類別=> https://paste.lamlam.io/nomehogupi.cs#14fXzlopygZ27adDcXEDtQHT0tWTxoYR

我有5列的Excel文件

這是我當前的代碼,但是沒有導出我期望的結果...

TextWriter stream = new StreamWriter("excel Path");
//foreach string in List<string>
foreach(var item in ComboList) {
 var rows = ExcelHelper.CellValueCollection(item.Key);

 foreach(var row in rows) {
  stream.WriteLine(item.Key + "|" + row);
  break;
 }
}

stream.Close();

我的結果:

Column1|Row1
Column1|Row2
Column1|Row3
...
Column2|Row1
Column2|Row2
Column2|Row3
...

預期:

Column1|Row1|Column2|Row1...
Column1|Row2|Column2|Row2...
Column1|Row3|Column2|Row3...

謝謝

第一個問題是您要在一行上寫兩個項目,而只寫兩個項目。

如果將stream.writeline()語句轉換為.write()語句,然后在內部循環執行.writeline()之后終止該行,是否有幫助?

很抱歉沒有發表評論,但沒有足夠的尊重表示這樣做。 -馬爾克

這就是答案,我只需要獲取數據集並對其進行迭代,非常簡單

var data = ExcelHelper.DataSet();

foreach (DataRow dr in data.Tables[0].Rows)
{
    Console.WriteLine(dr["Column1"] + "|" + dr["Column2"]);
}

如果我真正了解您想要什么! 我認為您需要向您的ExcelHelper添加諸如RowValueCollection類的方法,如下所示:

public static IEnumerable<string[]> RowValueCollection()
{
    var result = Data.Tables[0].Rows.OfType<DataRow>()
        .Select(dr => dr.ItemArray.Select(ia => ia.ToString()).ToArray());
    return result;
}

然后像這樣使用它:

var rowValues = ExcelHelper.RowValueCollection();
foreach (var row in rowValues)
{
    stream.WriteLine(string.Join("|", row));
}

HTH;)

暫無
暫無

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

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