Hi,
Can anyone here point me to a resource for updating a cell in a table in the 
header of a DOCX file?

I posted this question to stackoverflow here: 
http://stackoverflow.com/questions/28572615/apache-poi-how-to-update-header-table-cell-in-docx-file
 
<http://stackoverflow.com/questions/28572615/apache-poi-how-to-update-header-table-cell-in-docx-file>

Every time I run the following unit test I get a document in which the text I 
add to a cell with a run only appends to the content already in the cell.
I am starting with at template file that has a 4 rows by 3 column table in the 
header. I am trying to destructively update a cell in that table to no avail.
        @Test
        public void thatWordHeaderTableWriteWorks() throws IOException, 
InvalidFormatException {
                FileInputStream docxInput = null;
                XWPFDocument docxFile = null;
                docxInput = new FileInputStream("src/test/resources/02 Blank 
Docx.docx");
                docxFile = new XWPFDocument(OPCPackage.open(docxInput));

                // write something to the header
                XWPFDocument newDocument = docxFile;
                XWPFHeaderFooterPolicy policy = 
newDocument.getHeaderFooterPolicy();
                XWPFHeader header = policy.getDefaultHeader();

                XWPFTable headerTable = header.getTables().get(0);
                XWPFTableRow tr1 = headerTable.getRow(0);
                XWPFTableCell cell1 = tr1.getCell(2);

                tr1.removeCell(2);
                System.out.println("Cell data: " + cell1.getText());
                tr1.createCell();

                
cell1.getParagraphs().get(0).setAlignment(ParagraphAlignment.RIGHT);
                XWPFRun textRun = cell1.getParagraphs().get(0).createRun();
                textRun.setText("Packet Ref # ");
                XWPFRun nextRun = cell1.getParagraphs().get(0).createRun();
                nextRun.setColor("FF0000");
                nextRun.setText("1000.01.01.01");

                System.out.println("row one cell one " + 
tr1.getCell(2).getText());

                // create new file with the same file name except for a '04.u' 
in the
                // reference
                File newWordFile = new File("src/test/resources/04.n New Table 
Docx.docx");
                FileOutputStream out = new FileOutputStream(newWordFile);
                newDocument.write(out);
                out.close();
                System.out.println(newWordFile.getName()
                                + " written successfully on disk.");
                assertTrue(newWordFile.exists());
        }

I checked the unit tests here 
(https://svn.apache.org/repos/asf/poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/
 
<https://svn.apache.org/repos/asf/poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/>)
and found nothing that shows what I am trying to do.

Thanks,
Kent

Reply via email to