Как читать одно значение ячейки Excel

У меня есть файл excel с листом1, который имеет значение, которое мне нужно прочитать в строке 2 и столбце 10. Вот мой код.

Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(workbookPath, 0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false); Excel.Sheets excelSheets = excelWorkbook.Worksheets; string currentSheet = "Sheet1"; Excel.Worksheet excelWorksheet = (Excel.Worksheet)excelSheets.get_Item(currentSheet); var cell = (Excel.Range)excelWorksheet.Cells[10, 2]; 

После получения объекта ячейки, который является Excel.Range, я не знаю, как читать содержимое этой ячейки. Я попытался преобразовать его в массив и перебрать его, и я попытался преобразовать в массив строк и т. Д. Я уверен, что это очень просто. Есть ли прямой способ получить только одно значение ячейки, которое является строкой?

Вам нужно передать его в строку (а не массив строки), поскольку это одно значение.

 var cellValue = (string)(excelWorksheet.Cells[10, 2] as Excel.Range).Value; 
 using Microsoft.Office.Interop.Excel; string path = "C:\\Projects\\ExcelSingleValue\\Test.xlsx "; Application excel = new Application(); Workbook wb = excel.Workbooks.Open(path); Worksheet excelSheet = wb.ActiveSheet; //Read the first cell string test = excelSheet.Cells[1, 1].Value.ToString(); wb.Close(); 

В этом примере используется «Библиотека объектов Microsoft Excel 15.0», но может быть совместима с более ранними версиями Interop и других библиотек.

  //THIS IS WORKING CODE Microsoft.Office.Interop.Excel.Range Range_Number,r2; Range_Number = wsheet.UsedRange.Find("smth"); string f_number=""; r2 = wsheet.Cells; int n_c = Range_Number.Column; int n_r = Range_Number.Row; var number = ((Range)r2[n_r + 1, n_c]).Value; f_number = (string)number; 

Лучше использовать .Value2 () вместо .Value (). Это быстрее и дает точное значение в ячейке. Для определенного типа данных усечение можно наблюдать, когда используется .Value ().

Пожалуйста, попробуйте это, может быть, это поможет вам, это работа для меня

 string sValue = (range.Cells[_row, _column] as Microsoft.Office.Interop.Excel.Range).Value2.ToString(); //_row,_column your column & row number //eg: string sValue = (sheet.Cells[i + 9, 12] as Microsoft.Office.Interop.Excel.Range).Value2.ToString(); //sValue has your value 

Проблема с чтением единственной ячейки Excel в .Net исходит из того факта, что пустая ячейка оценивается в Null . Таким образом, нельзя использовать свойства .Value или .Value2 , поскольку появляется ошибка.

Чтобы вернуть пустую строку, когда ячейкой является Null Convert.ToString(Cell) можно использовать следующим образом:

 Excel.Workbook wkb = Open(excel, filePath); Excel.Worksheet wk = (Excel.Worksheet)excel.Worksheets.get_Item(1); for (int i = 1; i < 5; i++) { string a = Convert.ToString(wk.Cells[i, 1].Value2); Console.WriteLine(a); } 
  • Зачем нам нужен Thread.MemoryBarrier ()?
  • Почему порядок альтернатив имеет значение в регулярном выражении?
  • Process.Close () не завершает созданный процесс, c #
  • Почему я не должен обертывать каждый блок в «try» - «catch»?
  • Отправка электронной почты в .NET через Gmail
  • Бритва: декларативные HTML-помощники
  • Как узнать выбранные флажки из метода HttpPost Create action?
  • Могут ли аргументы основной подписи на C ++ иметь unsiged и const qualifiers?
  • Как написать файл .i для переноса обратных вызовов в Java или C #
  • Valgrind сообщает об ошибках для очень простой программы на C
  • Почему члены статического classа должны быть объявлены как статические? Почему это не просто неявно?
  • Давайте будем гением компьютера.