我有一个微软word文档,并希望通过java在原始文档中的每个点之前插入标题。任何方法?

时间:2014-11-25 11:09:22

标签: java ms-word apache-poi

我有一份文件说如下:

Heading Short Intro

  1. 列出项目我有一个关于堆栈溢出的帐户
  2. 我用它来发布问题
  3. 我用它来回答问题
  4. 我想将其转换为:

    Heading Short Intro - 1

    1. 列出项目我有一个关于堆栈溢出的帐户
    2. Heading Short Intro - 2

      1. 我用它来发布问题
      2. Heading Short Intro - 3

        1. 我用它来回答问题
        2. 编辑:我开始知道这个词本身具有制作宏的功能。所以经历那个。我面临的挑战是如何迭代数字列表

2 个答案:

答案 0 :(得分:0)

使用docx4j或POI的XWPF应该很容易。

在docx4j中,段落(和表格等 - 块级元素)包含在您可以访问的列表中,如下所示:

yourWordMLPackage.getMainDocumentPart().getContent()

答案 1 :(得分:0)

我是通过Word Macro本身完成的。更容易。 Bloew代码应该给你一个想法:

Sub iterateNumberedList()
   Dim oList As Paragraph

   Selection.GoTo What:=wdGoToSection, Which:=wdGoToFirst ' go to beginning of doc

 ' for each paragraph
   For Each oList In ActiveDocument.Paragraphs

  ' is it a numbered list of level 1 ?
   If oList.Range.ListFormat.ListType = 4 And oList.Range.ListFormat.ListLevelNumber = 1 Then

     ' move one line above list item
     Selection.MoveUp unit:=wdLine, Count:=1

     ' insert heading text
     Selection.Range.Text = "Heading " & vbCr

     ' format heading text with style 'Heading 1'
     Selection.Range.Style = "Heading 1"

     ' move down two paragraphs
     Selection.MoveDown unit:=wdParagraph, Count:=2
  End If
  Next
  End Sub