2012-06-23 46 views
0

我找不到在我的Java程序中使用XWPFDocument(Apache POI)在Docx中創建RTL段落的方法。這是我的代碼生成XWPFDocument。XWPFDocument中的從右到左(RTL)文本(Apache POI)

XWPFParagraph title = document.createParagraph(); 
    title.setAlignment(ParagraphAlignment.CENTER); 
    title.setVerticalAlignment(TextAlignment.CENTER); 
    title.setWordWrap(true); 
    XWPFRun titleRun = title.createRun(); 
    titleRun.setText(reportDesign.getName()); 

    XWPFTable s = document.createTable(resultList.size()+1, columnList.size()); 
    // declare a row object reference 
    XWPFTableRow r = s.getRow(0); 
    // declare a cell object reference 
    XWPFTableCell c = null; 
    // create columnList.size() cells (0-(columnList.size()-1)) 
    for (int cellnum = 0; cellnum < columnList.size(); cellnum++) { 
     c = r.getCell(cellnum); 
     c.setColor("c9c9c9"); 
     c.setVerticalAlignment(XWPFVertAlign.CENTER); 
     c.setText(columnList.get(cellnum).getColumnHeader()); 
    } 
    // create a sheet with resultList.size() rows (1-resultList.size()) 
    for (int rownum = 0; rownum < resultList.size(); rownum++) { 
     // create a row 
     r = s.getRow(rownum+1); 

     // create columnList.size() cells (0-(columnList.size()-1)) 
     for (int cellnum = 0; cellnum < columnList.size(); cellnum++) { 
      c = r.getCell(cellnum); 
      Object value = resultList.get(rownum).get(columnList.get(cellnum).getColumnKey()); 
      if (value != null) { 
       c.setText(value.toString()); 
      } else { 
       c.setText(""); 
      } 
     } 
    } 

你能幫我嗎?是否有一種邏輯方法來擴展POI(或類似解決方案)以獲得此功能?

回答

1

我到目前爲止發現的解決方法是使用模板文檔。

使用此方法,您可以創建一個空的文檔,其中包含「普通」樣式,配置爲RTL。這樣,文檔中的所有內容都將是RTL。

XWPFDocument document = new XWPFDocument(AbstractWordView.class.getClassLoader().getResourceAsStream("empty.docx")); 
+0

我怎麼可以設置UTF-8,默認情況下,當我轉換Word以PDF格式,PDF格式文本是被寵壞的,如 「بیترت」,而不是 「ترتیب」 我用這個代碼: 選項.fontEncoding(「UTF-8」) 但並非正確。所有字母消失 –

+0

您的問題與此問題無關,因爲它與Docx格式有關。我不知道使用Apache POI的PDF。 –

相關問題