Я пытаюсь создать экземпляр объекта, используя данные из документа 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
При создании экземпляра объекта с помощью конструктора в С# выдается исключение: Microsoft.CSharp.RuntimeBinder.RuntimeB ⇐ C#
Место общения программистов C#
1760062199
Anonymous
[b]Я пытаюсь создать экземпляр объекта, используя данные из документа Excel.
По какой-то причине я получаю это исключение:[/b]
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'Лучшее соответствие перегруженного метода для 'TRY.Employee.Employee(double, string, string, double)' имеет несколько недопустимых аргументов'
[b]из-за этой строчки:[/b]
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]));
[b]или вот этот:[/b]
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());
[b]мой код:[/b]
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]));
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/76094919/when-instantiating-an-object-using-a-constructor-an-exception-is-thrown-in-c[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия