c# - archivo - Cómo leer un solo valor de celda de Excel
leer archivo excel c# interop (6)
El problema con la lectura de una sola celda de Excel en .Net
proviene del hecho de que la celda vacía se evalúa como Null
. Por lo tanto, uno no puede usar sus propiedades .Value
o .Value2
, porque aparece un error.
Para devolver una cadena vacía, cuando la celda es Null
Convert.ToString(Cell)
se puede usar de la siguiente manera:
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);
}
Tengo un archivo excel con la hoja 1 que tiene un valor que necesito leer en la fila 2 y la columna 10. Aquí está mi código.
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];
Después de obtener el objeto de celda que es Excel.Range, no sé cómo leer el contenido de esa celda. Traté de convertirlo en una matriz y buclearlo e intenté convertirlo a una matriz de cadenas, etc. Estoy seguro de que es muy simple. ¿Hay una forma directa de obtener solo un valor de celda que sea cadena?
Es mejor usar .Value2 () en lugar de .Value (). Esto es más rápido y da el valor exacto en la celda. Para cierto tipo de datos, se puede observar el truncamiento cuando se usa .Value ().
Necesitas lanzarlo a una cadena (no a una matriz de cadena) ya que es un valor único.
var cellValue = (string)(excelWorksheet.Cells[10, 2] as Excel.Range).Value;
Por favor, intente esto, puede ser esta ayuda, esto es trabajo para mí
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
//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;
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();
Este ejemplo usó la ''Biblioteca de Objetos de Microsoft Excel 15.0'' pero puede ser compatible con versiones anteriores de Interop y otras bibliotecas.