# Apache Poi Formel Ergebnis ausgeben



## Maurice (14. Aug 2010)

Hallo,
ich hoffe das ist der richtige Themenbereich.
Naja, also meine Aufgabe lautete ich soll ein Arbeitszeitenprogramm schreiben. Dieses Programm soll in Firmen als Arbeitszeitenerfassungsprogramm benutzt werden. Also die Büro leute müssen später nur in das Programm den Namen und die Anfang und Endarbeitszeit eintippen. Das Programm soll diese Daten in eine Excel Tabelle machen. Das ganze habe ich vor mit Apache Poi zu realisieren. Ich habe erstmal einzelne Test mit Apache Poi gemacht, da ich zum erstenmal damit arbeite.
Mein Problem liegt darin ich schreibe in 2 Zeilen 2 Zahlen und aus diesen lasse ich die Summe ermitteln. Dann will ich die Summe auslesen. Nur als ergebniss bekomme ich immer die Formel raus also sprich SUM(B3:B4) anstatt einer 2. Gibt es fertige Methoden um das ergebnis zu bekommen oder muss ich mir dieses selber schreiben? Ich habe unten mal den gesamten code gepostet.
Schonmal vielen Dank 
mfg Maurice


```
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.*;

public class Test {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		System.out.println("Starten");
		Workbook wb = new HSSFWorkbook();
		Sheet sheet1 = wb.createSheet("Januar");
		FileOutputStream fileOut= new FileOutputStream("MW.xls");
		
	    /**
	     * Zellenbreite
	     */
	    sheet1.setColumnWidth(0,2000);
	    sheet1.setColumnWidth(1,2000);
	    sheet1.setColumnWidth(2,2000);
	  
	    /**
	     * Zellenhöhe
	     */
		Row titleRow = sheet1.createRow(0);
		titleRow.setHeightInPoints(35);
		
		/**
		 * Schreibe in Zelle 1
		 */
		Row row = sheet1.createRow(0);
		Cell cell = row.createCell(0);
        cell.setCellValue("MW");
             
        
        /**
         * Schreibe mehrere Zahlen und gebe die summe aus
         */
        row = sheet1.createRow(2); //Nach Unten
        cell= row.createCell(1);   //Nach Rechts
        cell.setCellValue(5);
        
        row = sheet1.createRow(3); //Nach Unten
        cell= row.createCell(1);   //Nach Rechts
        cell.setCellValue(1);
        
        
        
        row = sheet1.createRow(25); //Nach Unten
        cell= row.createCell(1);   //Nach Rechts
        String formel = "SUM(B3:B4)";
        cell.setCellFormula(formel);
        cell= row.createCell(0);
        cell.setCellValue("Summe:");
        
        
        /**
         * Erstellen
         */
        wb.write(fileOut);
	    fileOut.close();
	    
	    /**
	     * Weiter im Lesen
	     */
        InputStream inp = new FileInputStream("MW.xls");       
        HSSFWorkbook wb1 = new HSSFWorkbook(new POIFSFileSystem(inp));
        Sheet sheet = wb1.getSheetAt(0); 
        Row row3 = sheet.getRow(25);
        Cell cell3 = row3.getCell(1);
        System.out.println(cell3);
	}

}
```


----------



## Gast2 (15. Aug 2010)

Du überschreibst ja die [c]cell[/c] immer wieder... 

Probier doch einfach mal

```
/**
         * Schreibe in Zelle 1
         */
        Row row = sheet1.createRow(0);
        Cell acell = row.createCell(0);
        acell.setCellValue("MW");
             
        
        /**
         * Schreibe mehrere Zahlen und gebe die summe aus
         */
        row = sheet1.createRow(2); //Nach Unten
        Cell bcell= row.createCell(1);   //Nach Rechts
        bcell.setCellValue(5);
        
        row = sheet1.createRow(3); //Nach Unten
        Cell ccell= row.createCell(1);   //Nach Rechts
        ccell.setCellValue(1);
        
        
        
        row = sheet1.createRow(25); //Nach Unten
        Cell fcell= row.createCell(1);   //Nach Rechts
        String formel = "SUM(B3:B4)";
        fcell.setCellFormula(formel);
        Cell ecell= row.createCell(0);
        ecell.setCellValue("Summe:");
```


----------



## Maurice (15. Aug 2010)

Danke erstmal ja aber ich bekomme wieder nur die Formel anstatt die wirkliche Summe.
Ich will damit ja die Summe an den Stunden die man gearbeitet hat bekommen, beispiel
A1: 04:15
A2: 06:15

=SUMME(A1:A2)
Jetrzt will ich das mein Programm mir genau diese Summe gibt also die 10:30 Stunden. Und nicht die Formel =Summe(A1:A2);


----------



## jhb (25. Aug 2010)

Lies dir das hier mal durch:
Formula Evaluation

Ich bin da nämlich auch gerade dabei und via google-Suche auf diesen thread gestoßen.
Mir hat die Seite (s. link) geholfen!


----------

