使用JTextPane样式选项创建Word文件

时间:2014-04-24 12:18:26

标签: java ms-word apache-poi

我想将JTextPane的内容保存到word文件中。 我没有遇到问题,但我目前不能保留一些样式选项,例如段落样式。

我使用这些库:

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;

代码行;

System.out.println("Kaydete basıldı");
        String text = textPane.getText();
        lblNewLabel.setText(text);

        XWPFDocument document = new XWPFDocument();
        XWPFParagraph paragraph = document.createParagraph();
        XWPFRun run = paragraph.createRun();
        run.setText(text);

        try {

            FileOutputStream dosyaCikis = new FileOutputStream(
                    "sercan.docx");
            document.write(dosyaCikis);
            dosyaCikis.close();
        } catch (Exception e2) {
            e2.printStackTrace();
        }

Apache POI或其他方式,没关系,我在等你的帮助。

3 个答案:

答案 0 :(得分:1)

此示例显示如何设置各种样式选项:(Apache POI)

SimpleDocument

示例代码形成链接:

   XWPFDocument doc = new XWPFDocument();
   XWPFParagraph p1 = doc.createParagraph();

        p1.setAlignment(ParagraphAlignment.CENTER);
        p1.setBorderBottom(Borders.DOUBLE);
        p1.setBorderTop(Borders.DOUBLE);    
        p1.setBorderRight(Borders.DOUBLE);
        p1.setBorderLeft(Borders.DOUBLE);
        p1.setBorderBetween(Borders.SINGLE);    
        p1.setVerticalAlignment(TextAlignment.TOP);

   XWPFRun r1 = p1.createRun();

        r1.setBold(true);
        r1.setText("The quick brown fox");
        r1.setBold(true);
        r1.setFontFamily("Courier");
        r1.setUnderline(UnderlinePatterns.DOT_DOT_DASH);
        r1.setTextPosition(100);

其他示例(样式,图像.etc)可以在这里找到:

Example Package

答案 1 :(得分:0)

AFAIK编写Word文件的选项仅限于标准Java库。

您可能希望使用明确支持Word格式的工具 - 最好的选择可能是LibreOffice,即自由软件。 LibreOffice API支持Java和其他语言。

如需更全面的解释,请点击此处:

然而,答案是指OpenOffice,由于多年来的管理问题,LibreOffice是一个更积极开发的分支。

答案 2 :(得分:0)

您可以尝试docx_editor_kit。从网页:

  

它可以打开docx文件并反映JEditorPane中的内容(或   的JTextPane)。用户还可以创建样式内容并存储内容   以docx格式。

有点相关的是我的docx4all,但它最近没有更新,而且可能因你的目的而过度。

这两个都使用docx4j(而不是POI)。