# Java Excel API



## inflamer (1. Mrz 2006)

Hallo Forum!

Schlage mich zur Zeit mit folgendem Problem rum:

Mein Programm soll Daten aus Excel-Dateien importieren können.
Dafür nutze ich die Java Excel API www.andykhan.com/jexcelapi.

Eine separate Methode (s. unten) soll dabei die Konvertierung aller
Daten aus Excel-spezifischen Datentypen (sprich Währung, Datum,
Nummer etc.) in einen java.lang.String übernehmen. Bislang klappt
die Umwandlung jedoch nicht so richtig. Z.B. bekommt ein Datum,
das unter Excel nach dem Muster "TT.MM.JJJJ" formatiert ist, das
Format "TT/MM/JJJJ" (Slashes anstelle von Punkten). Desweiteren
wird das Euro-Symbol in Geldbeträgen in Einführungszeichen
eingeschlossen: *15,00 "€"*, usw...

Kennt jemand das Problem?

Hier ein Codeausschnitt der Methode:


```
//----
  private String excelCellToString(jxl.Cell cell) {
    String strVal;
    if (cell.getType() == jxl.CellType.DATE) {
      jxl.DateCell dateCell = (jxl.DateCell)cell;
      java.text.DateFormat format = dateCell.getDateFormat();
      strVal = dateCell.getDateFormat().format(dateCell.getDate());
    } else if (cell.getType() == jxl.CellType.NUMBER) {
      // ...
    } else if ...
    }
    return strVal;
  }
```

Danke für die Hilfe!


----------



## RicoSoft (1. Mrz 2006)

ich kenn diese api nicht, aber unter poi hatte ich nie solche probleme. gibt es gründe, die für diese api und gegen poi sprechen?


----------



## inflamer (1. Mrz 2006)

Hi!

mit POI hab ich es auch schon versucht, aber damit klappte die Konvertierung
eigentlich noch weniger, das Datum wird z.B. zur Ganzzahl konvertiert...
Wahrscheinlich übersehe ich da komlett irgend einen "Aspekt".

Hier nochmal die selbe Methode an POI angepasst:


```
private String excelCellToString(HSSFCell cell) {
    String strVal = null;
    if (cell != null) {
      final int cellType = cell.getCellType();
      switch (cellType) {
        case HSSFCell.CELL_TYPE_STRING:
          strVal = cell.getStringCellValue();                            break;
        case HSSFCell.CELL_TYPE_FORMULA:
          strVal = cell.getCellFormula();                                break;
        case HSSFCell.CELL_TYPE_BOOLEAN:
          strVal = ((Boolean)cell.getBooleanCellValue()).toString();     break;
        case HSSFCell.CELL_TYPE_NUMERIC:
          double d = (Double)cell.getNumericCellValue();
          int i = (int)d;
          strVal = i == d ? String.valueOf(i) : String.valueOf(d);       break;
      }
    }
    return strVal;
  }
```


----------

