Получайте только нужные строки в файлах Excel с помощью EPPlus.DataExtractor - PullRequest
0 голосов
/ 15 мая 2019

Я получаю данные из файлов Excel с библиотекой EPPlus.DataExtractor:

private static async Task addComptInformation(string codePoste, Poste currentPoste)
{
    var stream = await comptFile.OpenStreamForReadAsync();
    using (var p = new ExcelPackage(stream))
    {
        // get the first worksheet in the workbook
        ExcelWorksheet worksheet = p.Workbook.Worksheets[0];
        var endRow = worksheet.Dimension.End.Row;

        var data = worksheet.Extract<Compteur>()
        .WithProperty(c => c.TablRL, "A")//
        .WithProperty(c => c.Charge, "A")//
        .WithProperty(c => c.Energie, "A")//
        .WithProperty(c => c.FactMult, "W")
        .WithProperty(c => c.Type, "U")
        .WithProperty(c => c.NumSerie, "T")
        .WithProperty(c => c.CodePoste, "C")
        .GetData(5, endRow).ToList();

        foreach (Compteur c1 in data)
        {
            if (c1.CodePoste != null && c1.CodePoste.Equals(codePoste))
            {
                currentPoste.Compteurs.Add(c1);
            }
        }
    }
}

Как вы можете видеть, я получаю каждую строку моего файла Excel и преобразую ее в список Compteur объектов, после чего я использую этот список, чтобы только несколько экземпляров соответствовали CodePoste.

Это не совсем оптимизировано, и я понятия не имею, как это сделать лучше.

Есть ли способ просто извлечь правильные строки в файлах Excel и преобразовать только эти строки в Compteur объект?

...