Toon posts:

[JAVA] POI/HWPF (Word bestand schrijven)

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik moet voor een project het een en ander exporteren.
Oa naar Excel en Word.
http://jakart.apache.org/poi biedt hiervoor een mooie oplossing. Echter het Word gedeelte hinkt nogal achter op dat van Excel. Nu ben ik er al in geslaagd om een bestaand leeg document op te vullen met inhoud van een database.
Wat echter niet lukt is om een nieuwe regel te starten.

Google, Got, Usenet en zelfs de source bevatten hierover geen uitleg. En uit de code benik ook niet veel wijzer geworden.

Wie heeft er al met HWPF gewerkt?

vbcode:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
public void exporteerNaarDOC(DrukwerkenVector drukwerken, String doel)
    {
        byte[] _tableStream;
        byte[] _mainStream;
        FileInformationBlock _fib;
        
        //even testen om in te lezen en weg te schrijven
        try
        {
            //omdat de HWPF API nog in een zeer vroeg ontwikkelingsstadium zit kunnen we nog geen 
            //volledig nieuw word document aanmaken. Om dit op te lossen zullen we altijd 
            //vertrekken van een leeg document dat we in de package stoppen. Dit document zal dan
            //onder de gevraagde naam opgeslaan worden.  
            HWPFDocument doc = new HWPFDocument(new FileInputStream("c:/leeg.doc"));
            CharacterRun run = new CharacterRun();
            
            //wat opmaak
            run.setBold(false);
            run.setItalic(false);
            run.setCapitalized(false);

            org.apache.poi.hwpf.Range range = doc.getRange();
            
            //data uitlezen en toevoegen aan bestand
            Iterator it = drukwerken.iterator();
            while(it.hasNext())
            {
                DrukwerkenBag bag = (DrukwerkenBag)it.next();
                range.insertBefore("Klassen:",run);
                range.insertBefore("Bestemming: \n" + bag.getBest_naam(),run);
                range.insertBefore("Vak: " + bag.getVk_code(),run);
                range.insertBefore("Prijs: " + bag.getPrijs(),run);
                range.insertBefore("Datum: " + bag.getDatum_aanvraag(), run);
                range.insertBefore("Bon Nummer: " + bag.getBonnr(), run);     
            }

            //wegschrijven bestand en resources vrijmaken.
            OutputStream out = new FileOutputStream(doel);
            doc.write(out);
            out.flush();
            out.close();
             
        }
        catch (FileNotFoundException fout)
        {
            System.out.println(fout.getMessage());
        }
        catch (Throwable t)
        {
            t.printStackTrace();
        }
    }

Mijn excuses voor je layout

Verwijderd

Misschien niet helemaal wat je bedoelt: maar is het geen idee om voor Word gebruik te maken van RTF ? Dat leest ook in word in en is een formaat dat je zelf kan schrijven (is open)

Verwijderd

Topicstarter
Verwijderd schreef op 21 februari 2004 @ 22:10:
Misschien niet helemaal wat je bedoelt: maar is het geen idee om voor Word gebruik te maken van RTF ? Dat leest ook in word in en is een formaat dat je zelf kan schrijven (is open)
Das een goed idee ja.
Net even geprobeerd en als ik bij het wegschrijven de extentie op .doc zet zal daar geen kat over vallen denk ik.

Bedankt!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 22:24

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 22 februari 2004 @ 10:25:
[...]

Das een goed idee ja.
Net even geprobeerd en als ik bij het wegschrijven de extentie op .doc zet zal daar geen kat over vallen denk ik.

Bedankt!
Waarom wegschrijven als .doc en niet als .rtf?

Enige nadeel van RTF-bestanden wat ik tot nu toe heb gevonden is dat evt. plaatjes in documenten er voor zorgen dat een rtf-bestand vele malen groter is dan een .doc bestand.

Digitaal onderwijsmateriaal, leermateriaal voor hbo