POI 写word2007时,如何设置目录结构(标题)?

oh_Maxy 2015-05-31 03:57:24
加精

通过下面的方式写入的都是正文文本:

void writeText2Word(String text, XWPFDocument doc) {
XWPFParagraph para = doc.createParagraph();
XWPFRun run = para.createRun();
run.setText(text);
}


如何改造,才能让它写的是一个标题?就是目录里会显示的那种?
再进一步:如何设置成一级标题?二级标题?并且保证其序号正确?
如:
1. 第一课
1.1 第一节
...
2. 第二课
2.1 第一节
...

当然,前面的标题用数字或者中文都可以,甚至不用也行,只要目录层级关系对了就好。
求高手出现啊!


--------------------------------------------------------------------------------------------------------------------
最终问题解决了,写了篇总结性的博文,供大家参考:POI操作word2010实现多级标题结构
...全文
9051 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jinbo-Yu1992 2018-02-06
  • 打赏
  • 举报
回复
楼主,想问下您导出的word文档可以生成目录结构吗??
qq_32217411 2016-10-09
  • 打赏
  • 举报
回复
private ActiveXComponent word;
// 所有word文档集合
private Dispatch selection;
// 选定的范围或插入点
/**
* 插入标题
* @param num 标题编号
* @param level 标题级别:-2:一级标题;-3:二级标题;-4:三级标题;-5:四级标题
* @param text 标题题目
*/
public void insertTitle(String num, int level, String text) {
Dispatch activeDocument = Dispatch.get(word, "ActiveDocument").toDispatch();

//Dispatch.call(selection, "TypeParagraph");// 插入一个空行
//moveDown(1);
// Dispatch.put(selection, "Text", num + " " + text);
Dispatch.put(selection, "Text", text);
Dispatch style = Dispatch.call(activeDocument, "Styles", new Variant(level)).toDispatch();;
Dispatch.put(selection, "Style", style);
moveRight(1);
Dispatch.call(selection, "TypeParagraph");// 插入一个空行
//moveDown(1);
}
贴一段代码把,设置标题
qq_32217411 2016-10-09
  • 打赏
  • 举报
回复
用jaboc完美解决
mypokemonjj 2016-09-14
  • 打赏
  • 举报
回复
不知道看看~
EnhengQ 2016-08-23
  • 打赏
  • 举报
回复
pageoffice插件就是操作office文件的,可以丝丝啦
lujiaxing2007 2015-08-16
  • 打赏
  • 举报
回复
看到 poi 我就滚进来了.
程序员鼓励师 2015-06-22
  • 打赏
  • 举报
回复
学习[b][/b]
oh_Maxy 2015-06-16
  • 打赏
  • 举报
回复
引用 4 楼 qq_28571339 的回复:
请问楼主的问题解决了么?求教?
引用 16 楼 shijing266 的回复:
引用 8 楼 rui888 的回复:
问题已解决,实现方法参考 博客
  • 打赏
  • 举报
回复
引用 24 楼 oh_Maxy 的回复:
问题已解决,实现方法参考 博客
嗦嘎! 一颗所~
  • 打赏
  • 举报
回复
引用 22 楼 oh_Maxy 的回复:
头疼啊。。
我是没找到类似的方法
oh_Maxy 2015-06-08
  • 打赏
  • 举报
回复
引用 19 楼 shijing266 的回复:
[quote=引用 8 楼 rui888 的回复:] 这个可以不‘/?
好吧,这个是国外的吧,我打不开 没代理[/quote]
引用 21 楼 u010481036 的回复:
这个还真不会呢
头疼啊。。
Sammo 2015-06-08
  • 打赏
  • 举报
回复
这个还真不会呢
足球中国 2015-06-06
  • 打赏
  • 举报
回复
Hello World, 2015-06-05
  • 打赏
  • 举报
回复
直接写入html代码: <h1>xxxxx</h1> <h2>xxxxx</h2> <h3>xxxxx</h3>
  • 打赏
  • 举报
回复
引用 8 楼 rui888 的回复:
这个可以不‘/?
好吧,这个是国外的吧,我打不开 没代理
  • 打赏
  • 举报
回复
引用 17 楼 oh_Maxy 的回复:
[quote=引用 16 楼 shijing266 的回复:] 怎么感觉就跟权限菜单一样,展示几级菜单的那种 可以通过数据表实现啊
word文本和标题是不一样的,标题会在大纲视图里看到。 现在是不知道大纲里的标题,怎么用POI实现。。[/quote] 我知道你的意思了,实现那个 文档结构图的那种是吧,这个有点难
oh_Maxy 2015-06-05
  • 打赏
  • 举报
回复
引用 16 楼 shijing266 的回复:
怎么感觉就跟权限菜单一样,展示几级菜单的那种 可以通过数据表实现啊
word文本和标题是不一样的,标题会在大纲视图里看到。 现在是不知道大纲里的标题,怎么用POI实现。。
  • 打赏
  • 举报
回复
怎么感觉就跟权限菜单一样,展示几级菜单的那种 可以通过数据表实现啊
xia852003364 2015-06-05
  • 打赏
  • 举报
回复
cattpon 2015-06-03
  • 打赏
  • 举报
回复
不知道看看~
加载更多回复(11)
Apache POI是一个用于读取和入Microsoft Office格式文件的Java库。在处理Word文档,经常会涉及到页眉、页脚和标题设置。本篇文章将详细介绍如何使用Apache POI库实现Word文档中页眉、页脚和标题设置,以及相关的显示设置。 首先,需要了解Apache POI库中用于操作Word文档的主要类和接口。主要包括以下几个: 1. `XWPFDocument`:这是操作Word文档的核心类,它可以创建新的Word文档,或者读取已存在的Word文档。 2. `XWPFHeaderFooterPolicy`:用于操作Word文档页眉页脚的策略类。 3. `XWPFHeader`和`XWPFFooter`:分别用于操作页眉和页脚的内容。 4. `XWPFParagraph`:表示段落的类,是文档中可以独立存在的最小文本单元。 5. `XWPFRun`:表示段落中的一段文本,可以包含不同的文本样式。 接下来,我们将介绍如何使用这些类和接口来设置Word文档的页眉、页脚和标题。 ### 设置页眉和页脚 Apache POI提供了灵活的方式来设置Word文档中的页眉和页脚。通过`XWPFHeaderFooterPolicy`类,可以获取到文档的页眉和页脚对象,然后对它们进行操作。 ```java XWPFDocument document = new XWPFDocument(); XWPFHeaderFooterPolicy policy = document.getHeaderFooterPolicy(); if (policy == null) { policy = document.createHeaderFooterPolicy(); } // 创建页脚 XWPFHeaderFooterPolicy policy = document.getHeaderFooterPolicy(); if (policy == null) { policy = document.createHeaderFooterPolicy(); } XWPFHeader header = policy.createHeader(XWPFHeaderFooterPolicy.DEFAULT); XWPFFooter footer = policy.createFooter(XWPFHeaderFooterPolicy.DEFAULT); // 在页眉中添加内容 XWPFParagraph headerParagraph = header.createParagraph(); XWPFRun headerRun = headerParagraph.createRun(); headerRun.setText("这是页眉中的文本"); ``` 在设置页眉和页脚,还可以根据需要对文档的奇数页、偶数页以及首页设置不同的内容。这需要使用`XWPFHeaderFooterPolicy`的`createHeader`和`createFooter`方法,传入不同的参数。 ### 设置标题 标题Word文档中通常是指文档的章节标题,它不仅仅是一个段落,还可能涉及到文档的目录结构和级别。Apache POI设置标题,通常会用到`XWPFParagraph`类来创建一个标题段落,并为它设置标题级别。 ```java // 创建标题段落,并设置标题级别1 XWPFParagraph title = document.createParagraph(); title.setParagraphFormat(document.getCoreDocument().getBody().getParagraphArray(0).getParagraphFormat()); title.setStyle("Heading1"); XWPFRun titleRun = title.createRun(); titleRun.setText("这是标题"); ``` 上述代码片段创建了一个标题段落,并将格式设置为和文档中的第一个段落一致,并且应用了"Heading1"样式,这通常是Word中的最高标题级别。 ### 显示设置 显示设置通常指的是Word文档的视图设置,比如页面布局视图、阅读版式视图等。在Apache POI中,直接对Word文档进行显示设置的类和方法不多,但可以通过设置页眉、页脚中特定的内容来影响文档的显示效果,如在页眉页脚中插入页码、日期等。 如果需要处理文档的显示,通常是在用户与Word软件交互,由软件提供相应的视图设置选项,而不是通过编程方式在生成文档设置。 ### 总结 通过

67,541

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧