Ответ 1
Вам нужно передать его в строку (а не массив строки), поскольку это одно значение.
var cellValue = (string)(excelWorksheet.Cells[10, 2] as Excel.Range).Value;
У меня есть файл 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