使用EPPlus遍历ExcelRange

时间:2019-06-25 20:02:06

标签: c# excel epplus

我正在使用EPPlus从excel文件中读取数据。在某一时刻,我想将一行数据作为ExcelRange并将其传递给另一个函数。但是,当我尝试遍历该函数中的ExcelRange时,似乎重新分配了ExcelRange

例如,如果我这样做:

Console.WriteLine(excelRange.ToString());
Console.WriteLine(excelRange[1, 1].Text);
Console.WriteLine(excelRange.ToString());

我得到的输出是

C41:BP41
Training
A1

(“培训”是电子表格的A1单元格中的文本,而不是C41单元格中的文本)

如果我改为尝试做:

Console.WriteLine(excelRange.ToString());
Console.WriteLine(excelRange[excelRange.Start.Row, excelRange.Start.Column].Text);
Console.WriteLine(excelRange.ToString());

然后我得到

C41:BP41

C41

是否有一种方法可以遍历ExcelRange而无需更改?

2 个答案:

答案 0 :(得分:0)

我找到了一种方法,但是希望有人知道更好的方法。这是我能工作的东西:

int startRow = excelRange.Start.Row;
int startCol = excelRange.Start.Column;
int endCol = excelRange.End.Column;
for (int i = startCol; i <= endCol; i++)
{
    string cellText = excelRange[startRow, i].Text;
}

答案 1 :(得分:0)

或者,您可以将单元格中的值列表显示为

int startRow = excelRange.Start.Row;
int startCol = excelRange.Start.Column;
int endRow = excelRange.End.Row;
int endCol = excelRange.End.Column;

var rowValues=(object[,]) worksheet.Cells[startRow, startCol, endRow, endCol].Value;
List<string> lstValues = rowValues.Cast<object>().ToList().ConvertAll(x => Convert.ToString(x));