Ciao a tutti, sono alle "prime armi" con c#...avrei bisogno di una mano...ho da fare un controllo su alcuni dati...il problema è che ho estratto questi dati da un database access 97 esportati in excel e adesso sto cercando di fare un programmino che calcoli la media geometrica di questi valori (media geometrica = (va1*...*valN)^1/N)....questi valori che devo prendere stanno nella colonna 4 e partono da riga 2 (la riga 1 sono i nomi dei campi)..ho buttato giu questo codice:
codice:
public static double mediaGeometrica(String filename)
{
// apro il file excel
Application app = new Application();
//app.Visible = true;
try
{
Workbook excel = app.Workbooks.Open(filename);
Worksheet sheet = excel.Worksheets.get_Item(1);
// calcolo esponente x cui elevare il coeff finale come 1 / numero di righe del file xls meno 1 (la riga con i nomi dei campi)
double exp = 1 / (sheet.UsedRange.Rows.Count - 1);
// inizializzo il coeff della media geometrica coeff = 1
double coeff = 1;
// per ognuno dei valori dell'array degli esami
for (int i = 2; i <= sheet.UsedRange.Rows.Count; i++)
{
coeff = coeff * (double)(sheet.UsedRange.Cells[i, 4] as Range).Value; // moltiplico il coeff per il valore dell'esame --> produttoria dei valori degli esami
Console.WriteLine(coeff);
}
return System.Math.Pow(coeff, exp); // ritorno il valore della media geometrica (TT [i=1:n] value[i])^(1/n)
}
catch (Exception e)
{
Console.WriteLine(e.Message);
return 0;
}
}
praticamente con un ciclo for che parte da 2 (la prima riga) fino all'ultima compresa moltiplico il coefficiente per il valore di questa riga...dai risultati che da (mi stampa Infinito e la media finale è 1) secondo me non prende correttamente il valore della cella....qualcuno sa come aiutarmi???