Apache POI Filter erstellen

gigaplanet

Mitglied
Hallo ich habe eine Frage,

ich will eine Excel Tabelle erstellen und nun in eine bestimmte Zelle einen Filter einsetzen, das ich via Drag and Drop filtern kann. Doch irgendwie sagt er mir das folgendes nicht möglich sei:

sheet.setAutoFilter(CellRangeAddress.valueOf("C5:F200"));

und wo gebe ich an wo er den Filter hinmachen soll??

Danke im vorraus😉
 
welche Fehlermeldung bringt er denn?

via Drag&Drop ???:L. Wenn ich jetzt nicht vollkommend auf dem Holzpfad bin hat das mit Drag&Drop eher weniger zu tun 😉
 
das meinte ich schon auch, nur hat das trotzdem imho nicht soviel mit Drag&Drop zu tun. Naja ist ja egal. geht ja jetzt nicht darum..

Hab zugegeben noch nicht allzuviel mit POI gemacht und habe jetzt keine Zeit mir ein KSKB zu schreibenn aber wenn das auf der Apache Seite so steht, denke ich doch mal, dass das auch so funktionieren sollte 🙂. Wie instanziierst du denn dein sheet?
 
Java:
 HSSFWorkbook filterWorkbook = new HSSSFWorkbook();
HSSFSheet blatt = filterWorkbook.createSheet();

eigentlich ja genauso wie es in der Dokumentation steht und nun direkt datrunter halt die setAutoFilter Methode

aber iwie will er nich🙁
 
new HSSSFWorkbook(); ?

post am besten mal deinen kompletten Code. Wenn es zuviel drumrum ist, mach einfach ein KSKB. Sheet Laden und Autofilter setzen. Allgemein lösen sich viele Probleme mit einem KSKB von selbst, weil man iwo in den Tiefen von dem Programm sogar selbst nicht mehr durchblickt 😉
 
Ups ein S zuviel😉

Java:
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.CellRangeAddress;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.ss.usermodel.Font;


@SuppressWarnings("deprecation")
public class temp {

	public static void main(String[] args) throws IOException {
		
		String fileName="excel.xls";
		HSSFWorkbook Workbook= new HSSFWorkbook();
		CreationHelper createHelper = Workbook.getCreationHelper();
		HSSFSheet blatt=Workbook.createSheet();
		blatt.setAutoFilter(CellRangeAddress.valueOf("A1:A20"));
		FileOutputStream fos= new FileOutputStream(fileName);
		Workbook.write(fos);
		fos.close();
	}
}
 
funktioniert bei mir.

org.apache.poi.hssf.util.CellRangeAddress; ist Deprecated. Wie du ja eigentlich auch schon mit @SuppressWarnings("deprecation") selbst herausgefunden hast.

Probier stattdessen mal:
import org.apache.poi.ss.util.CellRangeAddress;

edit:
hier mein KSKB:
Java:
import java.io.*;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
 
public class Test {
 
    public static void main(String[] args) throws IOException {
        HSSFWorkbook Workbook = new HSSFWorkbook();
        HSSFSheet blatt = Workbook.createSheet();
        for (int i = 0; i < 10; i++) {
        	Row row = blatt.createRow((short)i);
        	Cell cell = row.createCell(0);
        	if (i == 0)
        		cell.setCellValue("Header");
        	else
        		cell.setCellValue(i);
        }
        blatt.setAutoFilter(CellRangeAddress.valueOf("A1:A1"));
        FileOutputStream fos= new FileOutputStream("c:\\excel.xls");
        Workbook.write(fos);
        fos.close();
    }
}

poi_filtergr7t.jpg
 
Zuletzt bearbeitet:
falls das bei dir nicht funktionieren sollte, würde ich mal die aktuellste Library laden. Mehr fällt mir dann aber dann auch nicht mehr ein 🙁
 
Auf jeden Fall erstmal danke für deine Hilfe und deine Zeit.

Aber irgendwie macht er immer noch die selbe Fehlermeldung und ich habe die aktuellste Library...

Ich verstehe es nicht 🙁


Würde es eigentlich gehen das ich mir in Excel eine Art Template erstelle wo ich diese Bereiche in Excel erstelle und mit JAVA einfach nur Daten darein schreiben lasse oder kann ich in JAVA nur generell neue Excel Dateien erstellen?
 
Java kann da garnix.. Die Frage ist, ob es Apache POI kann 😉. Also was ich der API ennehmen kann, hat HSSFWorkbook wohl mehrere Konstruktoren. U.a. einen, der einen InputStream als Parameter zulässt und somit afaik auch das Laden von Exceldateien zulässt (hätte mich jetzt auch sehr gewundert, wenn das Apache POI nicht kann 😉).

Zu deinem Problem fällt mir dann, wie oben schon angedeutet, nichts mehr ein. Wie gesagt, bei mir funktioniert das ohne Probleme. Bleiben imho nurnoch Bedienfehler in Bezug auf die IDE o.ä.
 
Gut dann werde ich das so machen das ich mir ein Template erstelle, hab das gerade mal anhand eines sehr vereinfachten KSKB mal ausgetestet und scheint zu klappen😉

Ich danke dir aufjeden fall
 
wenn so ein Work-Around für dich eine Lösung ist, wäre das Problem ja "gelöst" 😉. Für mich ist es allerdings keine aber vllt macht es ja auch in Bezug auf spätere Wartung/Erweiterbarkeit Sinn ein "Excelpattern/-template" zu erstellen. Dann wäre es wiederrum eine Lösung bzw. ein anderer Weg, der zudem noch Vorteile liefert 😉
 
Naja so ne tolle Lösung ist das auch nicht, aber ich habs nun hinbekommen. Ich hatte die akutuellste stable Version von Apache und noch nicht die 3.7 beta. Damit funktionierts..

Nun steh ich vor dem nächsten Problem, wie kann ich mehrere AutoFilter in ein Sheet setzen?

EDIT: Hat sich erledigt :applaus:
 
Zuletzt bearbeitet:
Hallo,

ich hatte dasselbe Problem beim XSSFSheet. (Methode setAutofilter(boolean) gibts dort nämlich nicht (mehr)!)
Lösung: XSSFSheet.lockAutoFilter();

Gruß,
Stefan
 

Zurück
Oben