Spring MVC - Excel

PollerJava

Top Contributor
Hallo,

ich habe eine etwas "blöde" Anforderung bzgl Excel. Ich muss Daten aus der Java- Anwendung in excel ausgeben - das ist einfach und geht sehr gut.
Nachdem Excel am Client- Computer angezeigt wird, kann der User dort im Excel was ändern.
Nachdem er mit den Änderungen fertig ist. soll er einfach nur auf Speichern klicken und dann sollte schon der Pfad hinterlegt sein, wo das Dokument gespeichert wird und der Pfad sollte auch am Server vorgegeben bzw. bekannt sein.

Ziel ist es, dass der User das Excel File nicht lokal irgendwo hinspeichern muss, dann irgendwo in eine generelle public- Dokumentenablage ziehen muss sondern eben so einfach wie möglich - Excel öffnen, Excel bearbeiten und dann Excel speichern -> am Server ist der Pfad eben vorgegeben worden, wo das Excel gespeichert wird und kann angezeigt werden mittels Link.
wenn man den Link wieder klickt, geht das Excel wieder auf.

Mir ist jetzt nicht ganz klar, wie ich dem am Client geöffneten Excel einen Pfad hinterlegen kann, damit das Excel dort dan gespeichert wird.

Vielen Dank für Infos!!

Poller
 

JavaMeister

Gesperrter Benutzer
Das wird auch so nicht gehen.

Wenn dein JAva Programm eine Datei erstellt (Dann weiß du ja, wo diese erstellt wurde), sollte man via NIO auf Änderungen prüfen und bei jeder Änderung die Datei auf den Server übertragen.
 

PollerJava

Top Contributor
Danke für die Antwort.
Das Problem ist ja, dass sich nach einem klick auf einen Link das Ecel am Client öffnet -> ich hab eine Web- Applikation die auf einem JBoss läuft und deshalb ist meinem verständnis nach das Excel für den Server nicht erreichbar, oder sehe ich das falsch. Ich was bis jetzt der Meinung, dass ich dem Excel nur alles mtgeben kann was es braucht (Speicherpfad use), da es sich dann am Client befindet und für den Server verloren ist.
 

JavaMeister

Gesperrter Benutzer
Wir machen das so, dass das Dokument mit einem Makro geliefert wird. Das ersetzt alle wichtigen Menüpunkte, wie Drucken und SPeichern.

Das Dokument sendet sich an den Server von alleine zurück.

Alternativ gibt es ein Protokoll, "Office Connect". Das erlaubt es remote zu Speichern.
 

PollerJava

Top Contributor
Vielen Dank nochmal für die Antwort.
Eine Frage hätte ich noch - Excel erzeugen in Java ist mir klar.
Mein Use Case ist aber so, dass ich ein Excel- Template habe (mit Excel- Funktionen), und dass mit BusinessDaten befüllen will. Danach soll das Excel natürlich am Client geöffnet werden und die Excel Funktionen sollen auch vorhanden sein und funktionieren.

Funktion zum Erstellen eines Excels ist klar (Ausschnitt aus Spring MVC Example):

Java:
@Override
	protected void buildExcelDocument(Map<String, Object> model,
			HSSFWorkbook workbook, HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		// get data model which is passed by the Spring container
		List<Book> listBooks = (List<Book>) model.get("listBooks");
		
		// create a new Excel sheet
		HSSFSheet sheet = workbook.createSheet("Java Books");
		sheet.setDefaultColumnWidth(30);
		
		// create style for header cells
		CellStyle style = workbook.createCellStyle();
		Font font = workbook.createFont();
		font.setFontName("Arial");
		style.setFillForegroundColor(HSSFColor.BLUE.index);
		style.setFillPattern(CellStyle.SOLID_FOREGROUND);
		font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
		font.setColor(HSSFColor.WHITE.index);
		style.setFont(font);
		
		// create header row
		HSSFRow header = sheet.createRow(0);
		
		header.createCell(0).setCellValue("Book Title");
		header.getCell(0).setCellStyle(style);
		
		header.createCell(1).setCellValue("Author");
		header.getCell(1).setCellStyle(style);
		
		header.createCell(2).setCellValue("ISBN");
		header.getCell(2).setCellStyle(style);
		
		header.createCell(3).setCellValue("Published Date");
		header.getCell(3).setCellStyle(style);
		
		header.createCell(4).setCellValue("Price");
		header.getCell(4).setCellStyle(style);
		
		// create data rows
		int rowCount = 1;
		
		for (Book aBook : listBooks) {
			HSSFRow aRow = sheet.createRow(rowCount++);
			aRow.createCell(0).setCellValue(aBook.getTitle());
			aRow.createCell(1).setCellValue(aBook.getAuthor());
			aRow.createCell(2).setCellValue(aBook.getIsbn());
			aRow.createCell(3).setCellValue(aBook.getPublishedDate());
			aRow.createCell(4).setCellValue(aBook.getPrice());
		}
	}

Kann ich in der Methode auch mein Excel- Template laden und befüllen? geht das überhaupt?

Vielen Dank!
Poller
 
Zuletzt bearbeitet:

JavaMeister

Gesperrter Benutzer
Also es ist besser, wenn du Templates bereits hast. Hier lassen sich Makros besser unterbingen ;D

Bei uns wird das so gemacht, dass eine XML + Template auf dem Client abgeladen wird und dann auf dem Client beides gemischt wird (VM Scripte). Aus dem WEB habe ich sowas noch nicht gemacht.

Theoretisch wäre es gut, wenn man nach dem Starten des Templates dieses anhand der vorhandenen Informationen die Businessdaten in einem seperaten Request downzuloaden. Und dann auf dem Client gemischt werden.
 
Zuletzt bearbeitet:

PollerJava

Top Contributor
Bei der letzten Antwort hab ich jetzt nicht viel verstanden :)

So wäre der Ablauf bei mir:
Mein Template (mit den Makros usw.) liegt am Server -> wenn ein User einen Link klickt, dann möchte ich einfach das Template mit Daten befüllen (je nach eingeloggten user) und dann dem Client schicken.

Hast du sowas schon mal gemacht bzw. weißt du ob das so funktioniert?
Danke!
 

JavaMeister

Gesperrter Benutzer
Serverseitig müsste man das mit apache Poi oder sowas machen.

Und das fertig an den Client übertragen. Wobei Du bei dieser Lösung stark von Apache Poi abhängig bist. Die vollen API Zugriff erhälst du natürlich mit .NET (VB, C# etc.). Ich würde daher die Möglichkeiten evaluieren, die du hast, um das "rendering" also die Businessdaten und dein Template auf dem Clientrechner zusammen zufügen.

Das bedeutet du benötigst 2 Dateien.

1. XML mit Businessdaten. Diese werden vor dem Download zusammengestellt und für den Server erreichbar abgelegt.
2. XLS mit Templateinformationen + Marcos.
2.1 Das Template bekommt auf dem Server eine eindeutige Information mit, damit die Businessdaten heruntergeladen werden können.

Du kannst nicht beide Dateien auf einmal übertragen. Das bedeutet, dass du das Template losschickst beim Klick auf den Link. Das Template muss eine "onLoad" Funktion haben, also ein Makro, dass ausgeführt wird, wenn man das Dokument öffnet. Dieses Makro downloadet mit einem seperaten Request die XML Businessdaten anhand der eindeutigen ID. Außerdem kannst du die XML Datei parsen und in die Felder im Dokument einfügen.

Gleichzeitig hast du weitere Makros im Template, die das Speichern umleiten in deine Funktion. Hier für das XLS serialisiert und an eine Schnttstelle auf den Server übertragen.

Wir haben dafür auch ein Freigegebenes Laufwerk. Hier werden die Dateien zentral abgelegt und in das System importiert. Bei uns ist das bissel einfacher, weil wir Thinclients direkt auf der Workstations der Sachbearbeiter nutzen und keine Webanwendungen.

Das ganze ist aus dem Web nicht 100 % trivial ^^
 
Zuletzt bearbeitet:

PollerJava

Top Contributor
Danke für die Antwort, ist schon sehr hilfreich, Auch wenn es beim mir jetzt an die Makro- Programmierung geht und ich eher weninger ahnung von VB PRogrammierung habe.
Ich frag mich jetzt noch, ob ich in das Template am Server nicht einfach die Daten hineinschreiben kann vor dem Download (nach einem Klick).
Die Makros sollen unangetastet bleiben, haben aber mit den in das Excel geschriebenen Daten nichts zu tun.
Ich find da leider gar nix im web.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
8u3631984 Ist es möglich in Spring Entity generische Listen verwenden Frameworks - Spring, Play, Blade, Vaadin & Co 3
R Spring Boot Test Assertions mit Objekten Frameworks - Spring, Play, Blade, Vaadin & Co 6
8u3631984 Pfad zu Test Datei in application.yml in Spring Boot Test Frameworks - Spring, Play, Blade, Vaadin & Co 7
R Spring Boot sql Beziehungen Frameworks - Spring, Play, Blade, Vaadin & Co 12
8u3631984 Spring JPA Probleme beim SPeichern von Sets Frameworks - Spring, Play, Blade, Vaadin & Co 3
M Spring Boot 3 Datenbanken zur Laufzeit Verbinden Frameworks - Spring, Play, Blade, Vaadin & Co 5
8u3631984 Spring JDBC Probleme beim Spaltennamen Frameworks - Spring, Play, Blade, Vaadin & Co 3
LimDul Spring-Batches in Docker über Rest starten/verfolgen Frameworks - Spring, Play, Blade, Vaadin & Co 0
ExceptionOfExpectation In Meiner Spring-Boot Applikation verlangt die Datenbank Wert für eine ID Frameworks - Spring, Play, Blade, Vaadin & Co 5
H Spring Boot Applikation und JHM Benchmark sowie ContextConfiguration in H2 Tests ich bekomme es nicht hin Frameworks - Spring, Play, Blade, Vaadin & Co 2
ExceptionOfExpectation Tests in Spring-Boot Frameworks - Spring, Play, Blade, Vaadin & Co 4
R Eure Erfahrungen mit Primefaces und Spring - wer managed die Beans Frameworks - Spring, Play, Blade, Vaadin & Co 4
Avalon Get Request doppelt abfeuern ohne Post Redirect Get Pattern. Spring Boot Thymeleaf MVC Frameworks - Spring, Play, Blade, Vaadin & Co 12
thor_norsk Konfigurationsprobleme mit Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 9
R Spring Boot Integration-testing mit Keycloak Frameworks - Spring, Play, Blade, Vaadin & Co 1
R Spring Boot Integration-testing mit Keycloak Frameworks - Spring, Play, Blade, Vaadin & Co 13
L Spring Data und Rest Controller? Frameworks - Spring, Play, Blade, Vaadin & Co 4
thor_norsk Spring Boot Fehler Frameworks - Spring, Play, Blade, Vaadin & Co 1
L Spring Data und Rest Conroller? Frameworks - Spring, Play, Blade, Vaadin & Co 4
thor_norsk Spring Boot und Docker Frameworks - Spring, Play, Blade, Vaadin & Co 5
B Spring Amazon-SP-Api Frameworks - Spring, Play, Blade, Vaadin & Co 3
8u3631984 Aktualisiere Spring Controller Frameworks - Spring, Play, Blade, Vaadin & Co 4
L Spring Data: Modellierung mit einer Embeddable bean Frameworks - Spring, Play, Blade, Vaadin & Co 2
D Spring Boot Test ob Validation geprüft wurde Frameworks - Spring, Play, Blade, Vaadin & Co 8
K Spring Boot OneToMany Frameworks - Spring, Play, Blade, Vaadin & Co 6
8u3631984 Spring Boot Docker Image erstellen und mit docker-compose konfigurieren Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Wann Spring Batch nutzen? Frameworks - Spring, Play, Blade, Vaadin & Co 1
P Spring Hessian Remote Beispiel Frameworks - Spring, Play, Blade, Vaadin & Co 20
8u3631984 Spring 2.7.8 Info Enpoint nicht zuerreichen Frameworks - Spring, Play, Blade, Vaadin & Co 1
gradlew.bat spring-boot:run funktioniert nicht Frameworks - Spring, Play, Blade, Vaadin & Co 4
Zrebna Spring Boot/Thymeleaf: Bestätigungsemail senden. Frameworks - Spring, Play, Blade, Vaadin & Co 2
Zrebna Spring - Thymeleaf: Wieso wird gem. Fallunterscheidung entsprechende View nicht geladen? Frameworks - Spring, Play, Blade, Vaadin & Co 3
Dimax Spring UsernameNotFoundException(msg); auf der View msg ausdrücken Frameworks - Spring, Play, Blade, Vaadin & Co 1
Dimax Spring UsernameNotFoundException(Message) auf der View Message ausdrücken Frameworks - Spring, Play, Blade, Vaadin & Co 2
B Spring Boot und JPA Error creating bean Frameworks - Spring, Play, Blade, Vaadin & Co 24
R Spring Security: Wie kommt 'UserDetails' an Username und Passwort ran? Frameworks - Spring, Play, Blade, Vaadin & Co 6
R Spring Security: Wie den User dynamisch authentifizieren? Frameworks - Spring, Play, Blade, Vaadin & Co 8
R Spring Security: Authentication & Permissions Frameworks - Spring, Play, Blade, Vaadin & Co 4
R Spring Boot: Warum soll PasswordEncoder in einer neuen Methode definiert sein? Frameworks - Spring, Play, Blade, Vaadin & Co 1
8u3631984 Cross-Origin beim Abrufen von Spring Endpoint Frameworks - Spring, Play, Blade, Vaadin & Co 1
D Spring Boot und Microservices Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Spring Boot additional Datasource for a single entity Frameworks - Spring, Play, Blade, Vaadin & Co 0
T Spring Resourcen Ordner ermitteln Frameworks - Spring, Play, Blade, Vaadin & Co 5
B Spring JPA und Repository Frameworks - Spring, Play, Blade, Vaadin & Co 12
D Mapstruct Dependency Injection funktioniert nicht mit Spring Frameworks - Spring, Play, Blade, Vaadin & Co 15
Avalon Wie sieht bei Euch das Deployment einer Spring Boot Anwendung aus? Frameworks - Spring, Play, Blade, Vaadin & Co 4
M Threads in Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 7
W DI-Problem in Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 4
T Spring Boot: Was bewirkt parent in maven genau? Frameworks - Spring, Play, Blade, Vaadin & Co 4
T Spring Security: Run-as replacement Einsatzbereich? Frameworks - Spring, Play, Blade, Vaadin & Co 1
OnDemand Vaadin+Spring Boot erster Seitenload nach Neustart endlos Frameworks - Spring, Play, Blade, Vaadin & Co 0
doncarlito87 Wie erhalte ich ein JSON aus eine NativeQuery (Spring Boot)? Frameworks - Spring, Play, Blade, Vaadin & Co 8
Avalon @Query Select Abfrage liefert falsche Werte (Spring Boot, JPA, Hibernate) Frameworks - Spring, Play, Blade, Vaadin & Co 3
Avalon Erstellung Dockerimage mit spring-boot:build-image in Spring Boot mit Umgebungsvariablen Frameworks - Spring, Play, Blade, Vaadin & Co 0
N Spring Integration - Logging Frameworks - Spring, Play, Blade, Vaadin & Co 7
D Spring Boot Field Injection in MapStruct Frameworks - Spring, Play, Blade, Vaadin & Co 5
D Spring Anfänger benötigt Hilfe Frameworks - Spring, Play, Blade, Vaadin & Co 9
OnDemand Spring Boot seltsame Logeinträge: Manipulationsversuche? Frameworks - Spring, Play, Blade, Vaadin & Co 2
D Spring Date keine neue Tabelle fuer Attribut Frameworks - Spring, Play, Blade, Vaadin & Co 1
T Spring Security Config File anpassen Frameworks - Spring, Play, Blade, Vaadin & Co 1
8u3631984 Spring Cloud : Resttemplate mit Loadballancer Frameworks - Spring, Play, Blade, Vaadin & Co 11
Dimax Spring resource not found Frameworks - Spring, Play, Blade, Vaadin & Co 2
M Spring MongoDB unique index Frameworks - Spring, Play, Blade, Vaadin & Co 3
M Spring Entity testen Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Spring Entity testen Frameworks - Spring, Play, Blade, Vaadin & Co 5
Dimax Spring App Probleme beim Ausführen auf dem Tomcat Server Frameworks - Spring, Play, Blade, Vaadin & Co 1
D Spring WebFlux Cors konfigurieren Frameworks - Spring, Play, Blade, Vaadin & Co 1
Dimax Schöne View mit anchor scrolling in Spring Frameworks - Spring, Play, Blade, Vaadin & Co 2
Dimax Spring JPA Multiple Keys Frameworks - Spring, Play, Blade, Vaadin & Co 3
S Spring Security mit oauth2 in lokaler Konfiguration principal mocken Frameworks - Spring, Play, Blade, Vaadin & Co 0
D Spring Boot Mile Stone und Snapshot Versionen Frameworks - Spring, Play, Blade, Vaadin & Co 2
OnDemand Spring Boot Exception Body Frameworks - Spring, Play, Blade, Vaadin & Co 2
D Was ist das Framework "Spring"? Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Spring Unit/Integrations Testing Frameworks - Spring, Play, Blade, Vaadin & Co 3
D Spring Unit Test: UnsatisfiedDependencyException: Error creating bean with name Frameworks - Spring, Play, Blade, Vaadin & Co 2
H Resource Liste Lazy Autowired Spring Context Frameworks - Spring, Play, Blade, Vaadin & Co 2
M Java Spring Security Frameworks - Spring, Play, Blade, Vaadin & Co 5
M Spring Security Login with Credentials Frameworks - Spring, Play, Blade, Vaadin & Co 0
N Spring Boot - Overkill für private Projekte? Frameworks - Spring, Play, Blade, Vaadin & Co 3
krgewb Spring und GWT - & wird zu & amp; Frameworks - Spring, Play, Blade, Vaadin & Co 2
K Migration eines internen Frameworks zu Spring:Boot Frameworks - Spring, Play, Blade, Vaadin & Co 0
OnDemand JPA/Spring Repository Like Suche leeres Ergebnis Frameworks - Spring, Play, Blade, Vaadin & Co 0
Z Hibernate & Postgres in Spring Boot (Syntaxprobleme) Frameworks - Spring, Play, Blade, Vaadin & Co 2
Z Spring Boot mit JPA;, Hibernate, Rest & Lombok Frameworks - Spring, Play, Blade, Vaadin & Co 8
M Spring Initializer - Webservices Frameworks - Spring, Play, Blade, Vaadin & Co 0
D Spring Hateoas Frameworks - Spring, Play, Blade, Vaadin & Co 1
ma095 Spring und Postgresql Errors Frameworks - Spring, Play, Blade, Vaadin & Co 4
OnDemand Spring+Vaadin App startet nicht Frameworks - Spring, Play, Blade, Vaadin & Co 1
OnDemand Spring Request externe API SSL Error Frameworks - Spring, Play, Blade, Vaadin & Co 7
OnDemand Spring Repo speichert, aber es kommt in der DB nicht an Frameworks - Spring, Play, Blade, Vaadin & Co 3
Dimax Im Spring ,Mysql-Funktion aufrufen Frameworks - Spring, Play, Blade, Vaadin & Co 2
OnDemand Spring Security/Boot/Vaadin Cookie Problem bei iFrame Frameworks - Spring, Play, Blade, Vaadin & Co 4
OnDemand Spring Boot: Feld ignorieren Frameworks - Spring, Play, Blade, Vaadin & Co 3
8u3631984 Spring + Thymleaf : Checkbox Object mappen Frameworks - Spring, Play, Blade, Vaadin & Co 0
N Buch zum Spring Framework bzw. Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 3
OnDemand Jasypt Spring Boot HIbernate wie komme ich an den Key? Frameworks - Spring, Play, Blade, Vaadin & Co 4
8u3631984 Spring Boot im Docker Container - Logback wird nicht verwendet Frameworks - Spring, Play, Blade, Vaadin & Co 13
sascha-sphw Spring - Authentication object was not found Frameworks - Spring, Play, Blade, Vaadin & Co 3
8u3631984 Welches Spring Frontend Framework verwendet ihr und wie bzw wo ? Frameworks - Spring, Play, Blade, Vaadin & Co 7
8u3631984 Spring security - 403 bei Role Access Regel Frameworks - Spring, Play, Blade, Vaadin & Co 6

Ähnliche Java Themen

Neue Themen


Oben