Tweakende vrienden;
Ik ben in Java aan het rommelen met een stukje code dat de invoer van textField naar placeholders in een Word template schrijft. Hiervoor opent het een .docx template en vervangt tekst placeholders voor wat ik invoer in het textField met fx:id"naamPlaceholder". Dit werkt allemaal prima maar mijn stukje code houdt het nieuw gegenereerde document "in gebruik" waardoor je alleen een "alleen-lezen" document of een nieuwe kopie kan openen.
Ik heb hiervoor het volgende stuk code van het internet gevist:
Als ik na regel 14 "doc.Write(new FileOutPutStream(-pad-))" de method "doc.Close()" toevoeg dan maakt de code wijzigingen in mijn template terwijl hij het moet opslaan in het nieuw te genereren document.
Zonder doc.close() werkt de code prima en worden al mijn placeholders vervangen maar blijft het document in gebruik bij Java.
Ik heb al het nodige geprobeerd maar ik krijg het niet voor elkaar. Heeft iemand een oplossing?
Ik heb zelf hieraan gedacht:
- Staat mijn FileOutputStream in de juiste scope?
- Moet ik de For loop op een bepaalde manier verbreken voor ik de FileOutputStream activeer?
Een hoop knappe koppen hier - hopelijk prikt iemand hier makkelijk doorheen.
Bedankt voor de moeite
Ik ben in Java aan het rommelen met een stukje code dat de invoer van textField naar placeholders in een Word template schrijft. Hiervoor opent het een .docx template en vervangt tekst placeholders voor wat ik invoer in het textField met fx:id"naamPlaceholder". Dit werkt allemaal prima maar mijn stukje code houdt het nieuw gegenereerde document "in gebruik" waardoor je alleen een "alleen-lezen" document of een nieuwe kopie kan openen.
Ik heb hiervoor het volgende stuk code van het internet gevist:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| try{ XWPFDocument doc = new XWPFDocument(OPCPackage.open("C:'\\users\\template.docx")); for (XWPFParagraph p : doc.getParagraphs()) { List<XWPFRun> runs = p.getRuns(); if (runs != null) { for (XWPFRun r : runs) { String text = r.getText(0); if (text != null && text.contains("naamPlaceHolder")) { text = text.replace("naamPlaceHolder", naamPlaceHolder.getText()); r.setText(text, 0); } } }doc.write(new FileOutputStream("C:'\\user\\bestand.docx")); } } catch(Exception e){ e.getStackTrace(); e.printStackTrace(); System.out.println("Bericht voor als het misgaat.") |
Als ik na regel 14 "doc.Write(new FileOutPutStream(-pad-))" de method "doc.Close()" toevoeg dan maakt de code wijzigingen in mijn template terwijl hij het moet opslaan in het nieuw te genereren document.
Zonder doc.close() werkt de code prima en worden al mijn placeholders vervangen maar blijft het document in gebruik bij Java.
Ik heb al het nodige geprobeerd maar ik krijg het niet voor elkaar. Heeft iemand een oplossing?
Ik heb zelf hieraan gedacht:
- Staat mijn FileOutputStream in de juiste scope?
- Moet ik de For loop op een bepaalde manier verbreken voor ik de FileOutputStream activeer?
Een hoop knappe koppen hier - hopelijk prikt iemand hier makkelijk doorheen.
Bedankt voor de moeite