Excel Dokument mithilfe von JExcelAPI auslesen funktioniert nicht :/

C

Chrizzey45

Neues Mitglied
1
Hallo!
Ich arbeite momentan im Rahmen der Facharbeit der 11. Klasse des Gymnasiums an einer App, welche Excel Dokumente auslesen und auswerten soll. Nun habe ich folgenden Code geschrieben, allerdings wird die wichtige Methode (hier testeZelle beim onClickListener des Buttons) nicht ausgeführt. Kann mir jemand sagen warum?
Ach ja, bitte keine Kommentare hinsichtlich meines sehr chaotischen Quelltextes :rolleyes2: Die wichtigen Stellen sind der Quelltext des Buttons und der Methode testeZelle() :)

PS: Beim debuggen habe ich gesehen, dass anscheinend etwas mit dem try und catch nicht ganz so funktioniert wie es soll, vielleicht hilft das ja ^^'

Liebe Grüße
Christopher

package mein.name.test1;

import android.content.res.AssetManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import java.io.InputStream;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;

public class KlausurenActivity extends AppCompatActivity {

@override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_klausuren);

Bundle bundle = getIntent().getExtras();
String stuff = bundle.getString("stuff");

final TextView TextView3 = (TextView) findViewById(R.id.textView3);

//TextView3.setText(stuff);



Button zWeiterButton = (Button) findViewById(R.id.buttonTesten);
zWeiterButton.setOnClickListener(new View.OnClickListener() {
@override
public void onClick(View view) {

testeZelle();
order(TextView3);
//Toast.makeText(KlausurenActivity.this, "Test" , Toast.LENGTH_SHORT).show();

}

});

}
public void order(View pView)
{
try{

AssetManager am = getAssets();
InputStream is = am.open("TestKlausuren.xls");
Workbook wb = Workbook.getWorkbook(is);
Sheet s = wb.getSheet(0);
int row = s.getRows();
int col = s.getColumns();
String xx = "";
for(int i=0 ; i<row; i++)
{
for(int c=0 ; i<col ; c++)
{
Cell z = s.getCell(c, i);
xx = xx+z.getContents();
}
xx = xx+"\n";
}
display(xx);
}

catch (Exception e)
{

}
}



public void display(String pValue)
{
TextView x =(TextView) findViewById(R.id.textView5);
x.setText(pValue);
}

public void testeZelle()
{
try {
AssetManager am = getAssets();
InputStream is = am.open("TestKlausuren.xls");
Workbook wb = Workbook.getWorkbook(is);
Sheet s = wb.getSheet(0);

Cell a1 = s.getCell(5, 5);
Cell b2 = s.getCell(1, 1);
Cell c2 = s.getCell(2, 1);


Toast.makeText(this, a1.getContents(), Toast.LENGTH_LONG).show();
//System.out.println(b2.getContents());
}
catch (Exception e) {}
}
}
 
Willkommen im Forum,

dein chaotischer Quelltext ist noch viel chaotischer und unlesbarer, wenn du ihn nicht in die Code Brackets setzt. (Zum ACSII-/BBCode-Editor wechseln, findest du in der rechten Ecke des Antwortfensters, danach die geschweiften Klammern in der Bar über der Antwortbox anklicken -> Code reinkopieren -> fertig). :)

Ich gehe mal davon aus, dass nichts passiert, da dein try Block fehlschlägt, der Catch Block aktiv wird, aber in deiner Catch nichts drinsteht. Versuch mal in deinen catch sowas wie....
Code:
Log.e(TAG, "Fehler: " + e.toString());

oder von mir aus auch
Code:
System.out.println("Fehler testeZelle Methode: " + e.toString());
... falls du mit Log nicht vertraut bist und poste das Ergebnis mal.
 
  • Danke
Reaktionen: Chrizzey45 und swa00
Und wenn du gerade dabei bist, dein InputStream würde sich auch freuen, wenn er irgendwann beendet wird. Versuche es mal mit der Methode close().
Und das gehört nicht nur in den try Block sonderen auch in den catch - Block.
Das gilt übrigens für alle Streams in Java.
 
  • Danke
Reaktionen: Chrizzey45 und lordzwieback
Hallihallo!
Danke für die Tipps, bin noch ein blutiger Anfänger was das alles angeht :laugh:

Habe jetzt
lordzwieack schrieb:
Code:
System.out.println("Fehler testeZelle Methode: " + e.toString());

ausprobiert und es hat mir folgendes ausgegeben:
I/System.out: Fehler testeZelle Methode: java.lang.StringIndexOutOfBoundsException: length=32; regionStart=1; regionLength=67

Was soll mir das genau sagen? LG
 
Bin gerade nicht zuhause und kanns mir nicht genauer anschauen. Aber der Fehler sagt, dass du irgendwo ein Array hast und dort auf einen Index zugreifst, der nicht existiert (bzw höher ist als die Länge des Arrays).

Morgen mehr, falls benötigt. :)
 
Habe es endlich geschafft! Nach viel herumprobieren habe ich die Excel-Datei neu gespeichert und folgendes am Quelltext der Methode verändert:

Code:
public void testeZelle()
    {
        try {
            AssetManager am = getAssets();
            InputStream inputStream = am.open("TestKlausuren.xls",0);
            Workbook wb = Workbook.getWorkbook(inputStream);
            Sheet s = wb.getSheet(0);


            Cell a1 = s.getCell("A1");  <-------------------
            Cell b2 = s.getCell(1, 1);
            Cell c2 = s.getCell(2, 1);

            wb.close();  <-------------------
            inputStream.close();  <-------------------

            Toast.makeText(this, a1.getContents(), Toast.LENGTH_LONG).show();
            //System.out.println(b2.getContents());

        }
        catch (Exception e)
        {
            System.out.println("Fehler testeZelle Methode: " + e.toString());
            Toast.makeText(this, "FEHLER", Toast.LENGTH_SHORT).show();

        }
    }

Ich bin so überglücklich :love: Danke für eure Hilfe :)
LG
 
  • Danke
Reaktionen: lordzwieback

Ähnliche Themen

R
  • raller
Antworten
15
Aufrufe
549
DOT2010
DOT2010
SaniMatthias
Antworten
19
Aufrufe
960
swa00
swa00
Zurück
Oben Unten