我如何遍历Excel文件

时间:2018-08-08 19:44:49

标签: c# loops foreach exceldatareader

如何遍历Excel文件?

我目前有一个使用ExcelDataReader的类

Class => 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...

谢谢

3 个答案:

答案 0 :(得分:0)

第一个问题是您要在一行上写两个项目,而只写两个项目。

如果将stream.writeline()语句转换为.write()语句,然后在内部循环执行了.writeline()之后终止行,这会有所帮助吗?

道歉,没有发表评论,但没有足够的尊重意见。  -马尔克

答案 1 :(得分:0)

这是答案,我只需要获取dataSet并对其进行迭代,非常简单

var data = ExcelHelper.DataSet();

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

答案 2 :(得分:0)

如果我真正了解您想要什么!我认为您需要向RowValueCollection中添加一种类似ExcelHelper的方法,如下所示:

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;)