从右到左(RTL)的文本XWPFDocument(Apache的POI)(Right to Left

2019-06-25 16:48发布

我无法找到一种方法,使在DOCX使用XWPFDocument(Apache的POI)在我的Java程序的RTL段落。 这里是我的代码生成XWPFDocument。

    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(或类似的解决方案)的逻辑呢?

Answer 1:

一种解决方法,我发现到现在使用的模板文件。

使用这种方法,你让一个空文件,在其“正常”的风格,被配置为RTL。 这样一来,一切都在文档中会RTL。

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


文章来源: Right to Left (RTL) text in XWPFDocument (Apache POI)