Я пытаюсь создать экземпляр объекта, используя данные из документа Excel.
По какой-то причине я получаю это исключение:
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'Лучшее соответствие перегруженного метода для 'TRY.Employee.Employee(double, string, string, double)' имеет несколько недопустимых аргументов'
из-за этой строчки:
employees.Add(new Employee(ws.Cells[i + 1, 1].Value, ws.Cells[i + 1, 2].Value, ws.Cells[i + 1, 3].Value, ws.Cells[i + 1, 4]));
или вот этот:
Employee employee = new Employee(ws.Cells[i + 1, 1].Value, ws.Cells[i + 1, 2].Value, ws.Cells[i + 1, 3].Value, ws.Cells[i + 1, 4]);
в чем может быть проблема? Мне нужно добавить все строки в свой список.
данные поступают правильно, я проверил их с помощью:
Console.WriteLine(ws.Cells[i+1, 3].Value)
типы данных конструктора действительны, я проверил это с помощью:
Console.WriteLine(ws.Cells[i + 1, 2].Value.GetType());
мой код:
public class Employee
{
public double Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public double Age { get; set; }
public Employee(double id, string firstName, string lastName, double age)
{
Id = id;
FirstName = firstName;
LastName = lastName;
Age = age;
}
}
`
` static void ExtractAndTransformData()
{
String filePath = "C:\\Users\\Owner\\Desktop\\employee3.xlsx";
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
Workbook wb;
Worksheet ws;
wb = excel.Workbooks.Open(filePath);
ws = wb.Worksheets[1];
ws.Columns.ClearFormats();
ws.Rows.ClearFormats();
int iTotalColumns = ws.UsedRange.Columns.Count;
int iTotalRows = ws.UsedRange.Rows.Count;
List employees = new List();
for (int i = 0; i < iTotalRows; i++)
{
Employee employee = new Employee(ws.Cells[i + 1, 1].Value, ws.Cells[i + 1, 2].Value, ws.Cells[i + 1, 3].Value, ws.Cells[i + 1, 4]);
employees.Add(new Employee(ws.Cells[i + 1, 1].Value, ws.Cells[i + 1, 2].Value, ws.Cells[i + 1, 3].Value, ws.Cells[i + 1, 4]));
}
}
Подробнее здесь: https://stackoverflow.com/questions/760 ... hrown-in-c