J'ai un fichier Excel avec sheet1 qui a une valeur que je dois lire à la ligne 2 et à la colonne 10. Voici mon code.
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];
Après avoir obtenu un objet de cellule qui est Excel.Range, je ne sais pas comment lire le contenu de cette cellule. J'ai essayé de le convertir en tableau et de le boucler, puis de convertir en tableau de chaînes, etc. Je suis sûr que c'est très simple. Existe-t-il un moyen direct d'obtenir une seule valeur de cellule sous forme de chaîne?
Vous devez le convertir en chaîne (et non en tableau) car il s'agit d'une valeur unique.
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();
Cet exemple utilise la bibliothèque d'objets "Microsoft Excel 15.0" mais peut être compatible avec les versions antérieures d'Interop et d'autres bibliothèques.
//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;
Il vaut mieux utiliser .Value2 () au lieu de .Value (). Ceci est plus rapide et donne la valeur exacte dans la cellule. Pour certains types de données, une troncature peut être observée lorsque .Value () est utilisé.
S'il vous plaît essayez ceci. Peut-être que cela pourrait vous aider. Ça marche pour moi.
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
Le problème avec la lecture d'une cellule Excel unique dans .Net
provient du fait que la cellule vide est évaluée en tant que Null
. Ainsi, on ne peut pas utiliser ses propriétés .Value
ou .Value2
, car une erreur apparaît.
Pour retourner une chaîne vide, lorsque la cellule est Null
, la Convert.ToString(Cell)
peut être utilisée de la manière suivante:
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);
}