Page 1 of 1

Add table to header

PostPosted: Fri Jul 27, 2012 8:29 am
by rightAlign
I am using Eclipse, no access rules were listed. Not really a big problem though.

Unfortunately, I do have a bigger problem involving headers. I'm trying to put a simple table within the header part of the document and am having a ton of trouble (aka no success) getting it done. I've read the other forum threads regarding 2 footers, and editing images within headers, and also have taken a look and tried to use parts of the HeaderFooterCreate.java example that you have on the site. Still haven't had any success though. Essentially all I want to do is create the header part (or access it if it created by default, which I don't think is the case) and then add a table object to it. I assumed this would be simple (still might be) but I haven't been able to figure it out.

Here is the snippet of the code that attempts to add my table (headerTbl) to the headerPart that i've created. I'm hoping that i'm only missing one or two key components, but perhaps i'm way off.
Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
HeaderPart header = new HeaderPart(new PartName("/word/header.xml"));
                        Hdr hdr = objectFactory.createHdr();
                        hdr.getContent().add(headerTbl);
                        header.setJaxbElement(hdr);

                        Relationship rel1 = wordMLPackage.getMainDocumentPart().addTargetPart(header);

                        HeaderReference headerReference = objectFactory.createHeaderReference();
                        headerReference.setId(rel1.getId());
                        headerReference.setType(HdrFtrRef.DEFAULT);


public static void createHeaderReference(
                        WordprocessingMLPackage wordprocessingMLPackage,
                        Relationship relationship )
                                        throws InvalidFormatException {

                List<SectionWrapper> sections = wordprocessingMLPackage.getDocumentModel().getSections();

                SectPr sectPr = sections.get(sections.size() - 1).getSectPr();
                // There is always a section wrapper, but it might not contain a sectPr
                if (sectPr==null ) {
                        sectPr = objectFactory.createSectPr();
                        wordprocessingMLPackage.getMainDocumentPart().addObject(sectPr);
                        sections.get(sections.size() - 1).setSectPr(sectPr);
                }

                HeaderReference headerReference = objectFactory.createHeaderReference();
                headerReference.setId(relationship.getId());
                headerReference.setType(HdrFtrRef.DEFAULT);
                sectPr.getEGHdrFtrReferences().add(headerReference);

        }
Parsed in 0.016 seconds, using GeSHi 1.0.8.4


Thanks again, Jason

Re: Add table to header

PostPosted: Fri Jul 27, 2012 10:47 pm
by jason
The first bit of code you posted:

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
HeaderPart header = new HeaderPart(new PartName("/word/header.xml"));
                        Hdr hdr = objectFactory.createHdr();
                        hdr.getContent().add(headerTbl);
                        header.setJaxbElement(hdr);

                        Relationship rel1 = wordMLPackage.getMainDocumentPart().addTargetPart(header);

                        HeaderReference headerReference = objectFactory.createHeaderReference();
                        headerReference.setId(rel1.getId());
                        headerReference.setType(HdrFtrRef.DEFAULT);
 
Parsed in 0.014 seconds, using GeSHi 1.0.8.4


doesn't add headerReference to your sectPr. Note that it is calling createHeaderReference in objectFactory, not the method you posted.

Untested, but try:

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
                        HeaderPart header = new HeaderPart(new PartName("/word/header.xml"));
                        Hdr hdr = objectFactory.createHdr();
                        hdr.getContent().add(headerTbl);
                        header.setJaxbElement(hdr);

                        Relationship rel1 = wordMLPackage.getMainDocumentPart().addTargetPart(header);

                       createHeaderReference(wordMLPackage, rel1);


public static void createHeaderReference(
                        WordprocessingMLPackage wordprocessingMLPackage,
                        Relationship relationship )
                                        throws InvalidFormatException {

                List<SectionWrapper> sections = wordprocessingMLPackage.getDocumentModel().getSections();

                SectPr sectPr = sections.get(sections.size() - 1).getSectPr();
                // There is always a section wrapper, but it might not contain a sectPr
                if (sectPr==null ) {
                        sectPr = objectFactory.createSectPr();
                        wordprocessingMLPackage.getMainDocumentPart().addObject(sectPr);
                        sections.get(sections.size() - 1).setSectPr(sectPr);
                }

                HeaderReference headerReference = objectFactory.createHeaderReference();
                headerReference.setId(relationship.getId());
                headerReference.setType(HdrFtrRef.DEFAULT);
                sectPr.getEGHdrFtrReferences().add(headerReference);

        }

 
Parsed in 0.016 seconds, using GeSHi 1.0.8.4