Scusate l'intrusione. In un mio progetto in C# tra tante cose apro e uso un file Excel del quale leggo, scrivo, modifico cancello dati, righe e colonne senza problemi. In alcuni casi ho la necessità di trovare l'ultima riga di un foglio excel e per fare questo inizialmente usavo un ciclo while. Aggiungo che il file excel e posto nel main in public in modo da poterlo usare senza problemi in ogni form
public static Excel.Application xApp; // rende globale
public static Excel.Workbook wb; // rende globale
public static Excel.Worksheet ws; // rende globale
Con questa operazione riesco ad utilizzare il file senza problemi: ad es per recuperare un dato uso
cognome = HomePage.ws.Cells[i, 1].value;
Adesso veniamo al mio problema: per trovare l'ultima riga di un foglio senza usare un ciclo while o for ho trovato questa istruzione
ultima_riga = HomePage.ws.Cells.Find("*", SearchOrder: XlSearchOrder.xlByRows, SearchDirection: XlSearchDirection.xlPrevious).Row;
che funziona senza problemi ma che però trova l'ultima riga massima nel senso che trova l'ultima riga della colonna con il massimo di dati. Se però voglio l'ultima riga di una particolare colonna devo modificare l'istruzione nel seguente modo
ultima_riga = GetLastRowInColumn(ws, "1");
dove le routine interessate sono
public static int GetLastRow(Worksheet ws)
{
return ws.Cells.Find("*", SearchOrder: XlSearchOrder.xlByRows, SearchDirection: XlSearchDirection.xlPrevious).Row;
}
public static int GetLastRowInColumn(HomePage ws, string column)
{
for (int x = GetLastRow(HomePage.ws); x >0; x--)
{
if (("" + HomePage.ws.Range[column + x].Value) != "")
return x;
}
return 0;
}
dove la GetLastRow è quella che funziona anche per tutte le colonne. l problema che non so risolvere è cosa mettere al posto del folglio attivo ws nella
ultima_riga = GetLastRowInColumn(ws, "1");
Ho provato di tutto: semplice ws, HomePage.ws e altro ma il compilatore continua a darmi errore ( ad es con il semplice ws mi dice che ws non esiste nel contesto corrente), Il secondo parametro "1" indica la colonna di ricerca e non da problemi. Cosa accidenti devo mettere? Se qualcuno mi può aiutare gli sarò infinitamente grato. Ripeto posso aggirare il problema con un ciclo while ma vorrei anche capire perchè non funziona. Grazie a tutti