.NET 4.x Дубликат типов при работе с Excel документом - C#

Узнай цену своей работы

Формулировка задачи:

Привет. Помогите пожалуйста понять что я делаю не так? Имеем следующее:
using Excel = Microsoft.Office.Interop.Excel;
 
Excel.Workbook excelBook = excelApp.Workbooks.Open(Environment.CurrentDirectory + "" + excelFile);
Excel.Worksheet excelSheet = (Excel.Worksheet)excelBook.Worksheets.Item[1]; 
Excel.Range excelRange = excelSheet.UsedRange;
var F = excelRange.Find("123");
Теперь в дебеге я вижу, что F имеет тип System.__ComObject. Я могу открыть "Динамическое представление" и увидеть всю нужную информацию. Однако стоит мне обратиться, скажем, командой F.Value, я получаю ошибку:
error CS1061: "Range" не содержит определения для "Value" и не удалось найти метод расширения "Value", принимающий тип "Range" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку).
Окей. Допустим я попробую использовать приведение типов: (Excel.Range)F.Value и по идее это правильное обращение. Но получаю другую ошибку
error CS0433: Тип "Range" существует как в "MyApplication, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null", так и в "Microsoft.Office.Interop.Excel, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c".
И ничего не могу понять. Других типов "Range" не существует. Помогите пожалуйста, всю голову сломал уже. Все обращения к таблице приводят именно к "тип существует и там и там". Нашел здесь старую тему на похожую проблему (Как работать с Excel из C#.NET?) но почему-то как такового решения конкретно этой проблемы там нету.

Решение задачи: «.NET 4.x Дубликат типов при работе с Excel документом»

textual
Листинг программы
Excel.Range Rng;
string excelFile = @"G:\C#\ExcelFile.xlsx";
Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();            
Excel.Workbook excelBook = xlApp.Workbooks.Open(excelFile);
Excel.Worksheet excelSheet = (Excel.Worksheet)excelBook.Worksheets.Item[1]; 
Excel.Range excelRange = excelSheet.UsedRange;
Rng = excelRange.Find("123");
MessageBox.Show(string.Format("Адрес ячейки: {0}\nЗначение ячейки: {1}", Rng.Address, Rng.Value.ToString()));
excelBook.Close(false);
xlApp.Quit();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы