2013-03-01 17 views
6

Come rendere questa tabella adattabile automaticamente alla larghezza della pagina del documento, quando la dimensione della colonna aumenta, usando apache-poi e allineando quella tabella al centro.Come adattarsi automaticamente alla tabella e allineando la tabella al centro, in base alla dimensione del documento Word Apache-POI?

Questo codice genera un documento Word l'estrazione di dati da Java a file word situato nel drive c. Ho impostato manualmente la larghezza ma ora funziona correttamente. Se sarebbe prezioso per me, se l'orientamento corretto è fornito

public Word2Doc() throws Exception { 

    System.out.println("This is Word To Document Class"); 

    File file = null; 
      FileOutputStream fos = null; 
      XWPFDocument document = null; 
      XWPFParagraph para = null; 
      XWPFRun run = null; 
      try { 
       // Create the first paragraph and set it's text. 
       document = new XWPFDocument(); 
       para = document.createParagraph(); 

       para.setAlignment(ParagraphAlignment.CENTER); 

       para.setSpacingAfter(100); 

       para.setSpacingAfterLines(10); 
       run = para.createRun(); 
       for(int i=1; i<=5; i++) 
       run.setText("Test Name \009\009\009 Value \t\t\t\t Normal Ranges\013\013"); 
       run.addBreak(); // similar to new line 
       run.addBreak(); 

       XWPFTable table = document.createTable(4, 3); 

       table.setRowBandSize(1); 
       table.setWidth(1); 
       table.setColBandSize(1); 
       table.setCellMargins(1, 1, 100, 30); 

       table.setStyleID("finest"); 


       table.getRow(1).getCell(1).setText("EXAMPLE OF TABLE"); 
       table.getRow(2).getCell(1).setText("fine"); 
       XWPFParagraph p1 = table.getRow(0).getCell(0).getParagraphs().get(0); 
       p1.setAlignment(ParagraphAlignment.CENTER); 
         XWPFRun r1 = p1.createRun(); 
         r1.setBold(true); 
         r1.setText("Test Name"); 
         r1.setItalic(true); 
         r1.setFontFamily("Courier"); 
         r1.setUnderline(UnderlinePatterns.DOT_DOT_DASH); 
         r1.setTextPosition(100); 

       //Locating the cell values 
         table.getRow(0).getCell(1).setText("Value"); 
         table.getRow(0).getCell(2).setText("Normal Ranges"); 

         table.getRow(2).getCell(2).setText("numeric values"); 

         table.setWidth(120); 

       file = new File("c:\\nwhpe.docx"); 
       if(file.exists()) 
        file.delete(); 


       FileOutputStream out = new FileOutputStream(file); 
       document.write(out); 
       out.close(); 
      } 

     } 
public static void main(String ar[]) throws Exception{ 
    new Word2Doc(); 
} 

}

risposta

4

Per impostare la larghezza di una tabella:

XWPFTable table = doc.createTable(nRows, nCols); 
    table.getCTTbl().addNewTblPr().addNewTblW().setW(BigInteger.valueOf(10000)); 

Per impostare la larghezza delle colonne:

cell.getCTTc().addNewTcPr().addNewTcW().setW(BigInteger.valueOf(2000)); 

Se i dati aumentano nella cella, la larghezza della colonna aumenta, ad esempio aumenta anche la larghezza della colonna per evitare questo tipo di problemi ms dobbiamo controllare la lunghezza del valore della stringa nella cella e dobbiamo aggiungere \ n (nuova riga) nella stringa facendo così possiamo impostare la larghezza della colonna.

Nel mio progetto ho lottato un sacco di impostare la larghezza della colonna e non ho risolto questo problema attraverso il controllo dei dati nella cella.

+0

Quali sono le unità? (cioè cosa significano 2000 e 10000?) – golimar

11

per impostare il tavolo a forma di auto, in fondo si tratta solo di estendere la larghezza di una dimensione specifica. esempio

CTTbl table  = poiTable.getCTTbl(); 
CTTblPr pr   = table.getTblPr(); 
CTTblWidth tblW = pr.getTblW(); 
tblW.setW(BigInteger.valueOf(5000)); 
tblW.setType(STTblWidth.PCT); 
pr.setTblW(tblW); 
table.setTblPr(pr); 

come per allineare la tavola al centro

CTJc jc = pr.addNewJc();   
jc.setVal(STJc.RIGHT); 
pr.setJc(jc); 
Problemi correlati