# Daten aus Exceldatei lesen



## Guest (22. Feb 2008)

Guten Morgen,

ich will aus einer Exceldatei die Zeilen auslesen. Ich habe diesen Code im Internet gefunden. Ich verstehe es nicht richtig es funktionieret aber, außer 
1.	In der Exceldatei sind mehrere Spalten belegt und ich kann mit diesem Code nur eine Spalte lesen. Kann ich   die gelesenen Zahlen in einer Array speichern?
2.	Die Zahlen die in der Spalten sind, sind  mehr als 15stellige Zahle und ich will sie als ganze Zahlen haben also nicht mit 123E30 oder so


Vielen  Dank 

```
import java.io.FileInputStream;
import java.text.DecimalFormat;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;


public class readExcel
{
  private static String filename = "S:\\test.xls";

  public readExcel() {

    try {

// open the Excel Spreadsheet
      POIFSFileSystem fs =
          new POIFSFileSystem(new FileInputStream(filename));
      HSSFWorkbook hssfworkbook = new HSSFWorkbook(fs);

// grab the first sheet
      HSSFSheet sheet = hssfworkbook.getSheetAt(0);

// define objects for housing spreadsheet data
      HSSFCell currentStateCell = null;
      HSSFCell currentSalesCell = null;
      HSSFRow currentRow = sheet.getRow(0);

      int rowCount = 0;

// cycle through rows and display cell values
      while (currentRow != null) {
        currentRow = sheet.getRow(rowCount++);
        if (currentRow != null) {
          currentStateCell = currentRow.getCell( (short) 0);
          currentSalesCell = currentRow.getCell( (short) 1);
        }
        else
          break;
       // DecimalFormat dc = new DecimalFormat("$###,###.##");
        System.out.println(currentStateCell);
        //System.out.println(dc);
//      System.out.println(currentSalesCell.getNumericCellValue());

      }

    }
    catch (Exception e) {
      e.printStackTrace();
    }

  }
}
```


----------



## babuschka (22. Feb 2008)

ich würd dazu JXL benutzen....
http://jxl.sourceforge.net/
ist ein gutes tutorial im download dabei


----------



## Guest (22. Feb 2008)

ich habe überhaupt keine Ahnung von xml, habe nie damit gearbeitet. Kann ich diesen Code nicht bearbeiten und verwenden?


----------



## babuschka (22. Feb 2008)

wie willst du eine xml auslesen, wenn du keine ahnung von dem aufbau der xml-datei hast?
lies dir das mal durch...
www.galileocomputing.de/openbook/javainsel7/javainsel_14_001.htm#mjd77536314d4abad924811cc6061f9d39
dann sag bescheid wie deine xml-datei aufgebaut ist


----------



## Guest (25. Feb 2008)

Ich habe keine XML Datei. Ich habe nur eine Exceldatei. Durch den oberen Code kann ich die erste Spalte lesen, ich habe aber mehrere Spalten in der Tabelle und wollte alles lesen


----------



## Weisswurst (26. Feb 2008)

Gibts da ein HSSFColumn?


----------



## Weisswurst (26. Feb 2008)

Ok, gibts nicht.
Versuchs mal mit dem Beispiel.
Da müsste klar werden wie das geht.

http://www.apda-online.com/index.php?option=com_content&task=view&id=33&Itemid=30


----------



## Guest (26. Feb 2008)

Danke erstmal. Was du vorgeschlagen hast ist um eine Table zu erzeugen, das will ich aber nicht. Ich habe eine Tabelle mit beliebig viele Spalten und Zeilen. Und sie bestehen nur aus 15stelligen Zahlen. Mit meinem Code kann ich nur die erste Spalte lesen. Und ich benutzer JBuilder zum Arbeiten


----------



## Guest (26. Feb 2008)

ich gelaube ich habe es 

```
public readExcel() {
    int Zahl = 0;

    try {

// open the Excel Spreadsheet
      POIFSFileSystem fs =
          new POIFSFileSystem(new FileInputStream(filename));
      HSSFWorkbook hssfworkbook = new HSSFWorkbook(fs);

// grab the first sheet
      HSSFSheet sheet = hssfworkbook.getSheetAt(0);

// define objects for housing spreadsheet data
      HSSFCell currentStateCell = null;
      HSSFCell currentSalesCell = null;
      HSSFRow currentRow = sheet.getRow(0);

      int rowCount = 0;
      Vector vec = new Vector();
// cycle through rows and display cell values
      while (currentRow != null) {
        currentRow = sheet.getRow(rowCount++);
        if (currentRow != null) {
          for (int j = 0; j < currentRow.getPhysicalNumberOfCells(); j++) {
            HSSFCell cell = currentRow.getCell( (short) j);
            vec.add(cell);
          } 
        }
        else
          break;
      }
  }
    catch (Exception e) {
      e.printStackTrace();
    }

  }
```


----------

