Как прочитать одно значение ячейки 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.Диапазон, я не знаю, как читать содержимое этой ячейки. Я попытался преобразовать его в массив и цикл над ним, и я попытался преобразовать в массив строк и т. д. Я уверен, что это очень просто. Есть ли прямой способ получить только одно значение ячейки, которое является строкой?
6 ответов
вам нужно привести его к строке (а не массиву строк), так как это одно значение.
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 () вместо .Значение.)( Это быстрее и дает точное значение в ячейке. Для определенного типа данных усечение может наблюдаться, когда .Используется значение ().
пожалуйста, попробуйте это. Может, это тебе поможет. Это работает на меня.
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);
}