我正在使用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
而无需更改?
答案 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));