Имеется таблица xlsx с тремя столбцами, из нее через программу необходимо найти значения "ВНИМАНИЕ" из первого столбца и вывести список с прилегающими значениями из второго столбца
Оригинал таблицы:
Все ОК Алексеев Алексей 15.01.2018
ВНИМАНИЕ Иванов Иван 25.11.2017
Все ОК Александров Александр 19.02.2018
ВНИМАНИЕ Михайлов Михаил 23.07.2017
ВНИМАНИЕ Петров Петр 22.08.2017
Результат:
Иванов Иван
Михайлов Михаил
Петров Петр
Как это сделать через list?
То что имеется на данный момент:
namespace WindowsFormsApp4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
this.openFileDialog1.Filter = "Excel Files(.xlsx)|*.xlsx";
this.openFileDialog1.Title = "Select an excel file";
if (this.openFileDialog1.ShowDialog() == DialogResult.OK)
{
this.txtPath.Text = openFileDialog1.FileName;
FileStream stream = File.Open(openFileDialog1.FileName, FileMode.Open, FileAccess.Read);
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
var people = new List<Person>();
while (excelReader.Read())
{
people.Add(new Person
{
FirstName = excelReader.GetString(0),
LastName = excelReader.GetString(1)
});
}
this.resultGrid.DataSource = people;
}
}
}
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
}
Все отлично выводится "как есть" в таблице:
Я попытался реализовать хотя бы просто поиск
var value = people.FindAll (x => x.name == "ВНИМАНИЕ").value
В итоге как и ожидал - наткнулся на ошибку (Error CS1061 'Person' does not contain a definition for 'name' and no extension method 'name' accepting a first argument of type 'Person' could be found (are you missing a using directive or an assembly reference?) WindowsFormsApp4), и, я так понял, начал не тем путем искать индекс строки.
Как лучше это организовать?
Сборка персонального компьютера от Artline: умный выбор для современных пользователей