Обход ExcelRange с EPPlus - PullRequest
       19

Обход ExcelRange с EPPlus

0 голосов
/ 25 июня 2019

Я использую 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 голосов
/ 27 июня 2019

Кроме того, вы можете получить список значений в ячейках как

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));
0 голосов
/ 26 июня 2019

Я нашел способ, но надеюсь, что кто-то знает о лучшем способе.Вот что у меня работает:

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...