Odczyt danych z Excela do listy typu Double

0

Witam mam problem z wczytaniem danych z pliku Excel do Listy typu Double
Dane nie zapisują się do listy w odpowiednim formacie np. wartość 7,53 zapisuj się jako 7.0 ; 380,5 jako 3.0 itp.

public class Program 
{
	private String Plik;
	private List<Double> Dane= new ArrayList<Double>();

	
	public void ustawPlikExcel(String Plik)
	{
		this.Plik = Plik;
	}
	
	public void WyswietlElementyListy()
	{
		System.out.println(Dane);
	}
	

	public void ReadExcel () throws IOException
	{
		File plikWejsciowy = new File(Plik);
		Workbook skoroszyt;
		try
		{
			skoroszyt = Workbook.getWorkbook(plikWejsciowy);
			Sheet arkusz = skoroszyt.getSheet(0);
			
			for (int j= 0; j<arkusz.getColumns(); j++)
			{
				for (int i= 0; i<arkusz.getRows(); i++)
				{
					Cell komorka = arkusz.getCell(j, i);
					CellType typ = komorka.getType();
					if(typ == CellType.LABEL)
					{
						System.out.println(komorka.getContents());
					}
					if(typ == CellType.NUMBER)
					{
						System.out.println(komorka.getContents());
						String[] kol = komorka.getContents().split("");
						Double komorka1 = Double.parseDouble(kol[1]);
						Dane.add(komorka1);
					}
				}
			}	
		}
		catch(BiffException e)
		{
			e.printStackTrace();
		}
	}
	

	public static void main(String[] args) throws IOException 
	{
		Program pr = new Program();
		pr.ustawPlikExcel("F:/Nowy folder/workspace_java/SiecSp/dane.xls");
		pr.ReadExcel();
		pr.WyswietlElementyListy();
	}
}
0
                        System.out.println(komorka.getContents());
                        String[] kol = komorka.getContents().split("");
                        Double komorka1 = Double.parseDouble(kol[1]);
                        Dane.add(komorka1);

Zamień na

Dane.add(Double.parseDouble(komorka.getContents().replace(",", ".")));
0

Po co jest wiersz

String[] kol = komorka.getContents().split("")

On z takiej zawartości komórki: "345,78" wyprodukuje tablicę kol=["","3","4","5",",","7","8"]. Po parsowaniu kol[1] dostaniemy liczbę 3.0
Jeżeli masz pewność, że w każdym badanym dokumencie separatorem dziesiętnym jest przecinek, to wystarczy rozwiązanie z powyższego postu. Jeśli mogą się trafić dokumenty z różnymi separatorami, to

double komórka1 = 0.0;
try
{
    komórka1 = Double.parseDouble(komorka.getContents());
}
catch(NumberFormatException e)
{
    komorka1 = Double.parseDouble(komorka.getContents().replace(",", "."))
}
Dane.add(komorka1);
0
bogdans napisał(a):

Jeśli mogą się trafić dokumenty z różnymi separatorami, to

raczej

String komorkaTxt;
double komórka1 = 0.0;
try
{
    komorkaTxt = komorka.getContents().trim().replace(",", ".");
    komórka1 = Double.parseDouble(komorkaTxt);
}
catch(NumberFormatException e)
{
    // obsluga bledu
}
Dane.add(komorka1);

Przy środowiskach z separatorem decymalnym "," w Twoim kodzie dla każdej wartości zgłaszany byłby wyjątek... trochę mało wydajne chyba.

1 użytkowników online, w tym zalogowanych: 0, gości: 1