当前位置: 首页 > 常见问题 > Word文档 > Word目录

Java生成Word文档目录,word论文目录如何自动生成

  • Word目录
  • 2024-07-27

Java生成Word文档目录?1. **创建文档:** 首先,创建一个`XWPFDocument`对象表示Word文档。2. **添加内容:** 向文档中添加正文内容,包括需要在目录中显示的标题和文本。3. **添加目录:** 在文档的开头或结尾添加一个包含目录的段落。4. **插入** 为每个需要在目录中显示的标题添加一个超链接。那么,Java生成Word文档目录?一起来了解一下吧。

word制作目录

public static void outputString1(String str, File file) {

try {

out = new PrintWriter(file);

byte bytes[] = str.getBytes();

int i = 0;

while ((bytes.length - i) != 0) {

out.write(bytes[i]);

i++;

}

out.close();

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

* @param str

*要写入文件的字符串

* @param file

*要写入字符串的文件名,如new File("C:/test.doc")

java生成文件到指定目录

首先是action的createDoc方法:

[java]

/**

* 通过HttpCient调用报告服务器的方法生成报告 DOC

*/

public String createDoc() throws Exception {

//定义放回成功与否的判断码

String prMsg="";

// 获取当前登录的用户

UserVo userVo = CommonUtils.getUserMessage();

//获取模版类型

docType = Struts2Utils.getParameter("docType");

//重新创建文档

String creatOrnot = Struts2Utils.getParameter("creatOrnot");

//获取组组编号参数

workgroupId = Struts2Utils.getParameter("workgroupId");

//获取评估用例实例ID参数

evtcaseInstId = Struts2Utils.getParameter("evtcaseInstId");

if(CommonUtils.isNotNull(docType)){

//获取项目Id

projectId = Struts2Utils.getParameter("projectId");

if(!CommonUtils.isNotNull(projectId)){

if(CommonUtils.isNotNull(this.getIdFromSession("PM_PROJECTID"))){

projectId = this.getIdFromSession("PM_PROJECTID").toString();

}else{

Struts2Utils.getRequest().setAttribute("msg", "请先选择项目!");

}

}

if(CommonUtils.isNotNull(projectId)){

prMsg = infoSystemDescService.downloadFileByUrl(projectId, userVo.getUserId(), workgroupId, evtcaseInstId, docType, creatOrnot);

}

}

return "docList";

}

注:在我贴出来的代码中,能看懂就行了,有些不用管他(可能是其他业务方面的判断),关于最后返回的prMsg---代表各种状态 主要表示成功与否或者是出错的信息。

如何将已有文本生成目录word

一 准备工作

先了解一下概念 JACOB 就是 JAVA Bridge的缩写 提供自动化的访问的功能 也是通过JNI功能访问windows平台下的组件或者win 系统库的 这是一个开始于 年的开源项目的成果 有很多使用者对该项目进行了修改 做出了自己的贡献

Jacob下载地址 ?group_id= &package_id=

我在这里下载了Jacob 和jacob 的版本两个版本

这里下载的是目前最新的Jacob 的Release版

另外java操作word方式还有(个人认为通过jacob最好 自己可以扩展 网上除poi之外几乎全是java 技术实现的):

( ):Apache POI Java API To Access Microsoft Format Files();对word处理不够强处理Excel功能可以 但是全是通过java完成的 不需 要组件支持;

( ):java word 是一个在java程序中调用 MS Office Word 文档的组件(类库) 该组件提供了一组简单的接口 以便java程序调用他的服务操作Word 文档 (好象也是用的java 技术);

( )web开发语言操作word的功能最好还是用第三方的控件 看看这个SOAOFFICE 还可以使用js 写VBA呢

二 安装Jacob

Jacob的安装非常的简单 我们解开下载的jacob_ zip 在文件夹中找到jacob dll和jacob jar两个文件 如果是 Jacob 则是jacob x dll( 位 机和jacob x dll( 位)和 jacob jar两个文件 Jacob dll直接放到系统的system 文件夹下就行了 连注册都不用的(或者拷贝到jdk或者jre的bin目 录下也行 当前测试文件所在的目录也行 就是只要在java library path中就可以) 而jacob jar设置到classpath中去就 可以了 或者在IDE开发环境的工程中设置扩展库也一样的 我是这样使用的将jacob x dll或复制 到%Tomcat %\bin目录下将jacob jar复制到%Tomcot %\Share\lib目录下 我使用过程中感觉放到这里是一个最终解决 办法 当你放哪都有问题的时候 我这样用之后再没有出过因为系统不一样出现的各种各样的问题 当然你作的是web的项目

注意使用jacob一写要安装word 我装的word 如果是操作word 就不用jacob了(好像这方面的API)

对jacob dll几种配置方法 (网上看到)

: :

把jacob dll文件 复制到 windows\system 目录下 (注 我用的时候这个方法不能运行)

把jacob dll放入 Java\jdk _ \jre\bin目录下 把jacob jar放入 Java\jdk _ \jre\lib\ext目录下 可以正常运行

把jacob dll放入 \glc\src目录下 把jacob jar放入WEB INF\lib目录下 也是可以正常运行

三 使用(以下是我改写的一个word操作类 希望有兴趣的朋友完善 记得发给我一份)

//注意java操作word关键是定位操作对象;

import jacob activeX ActiveXComponent;

import Dispatch;

import Variant;

/**

* jacob操作MSword类

* @author

*/

public class WordBean {

// word文档

private Dispatch doc;

// word运行程序对象

private ActiveXComponent word;

// 所有word文档集合

private Dispatch documents;

// 选定的范围或插入点

private Dispatch selection;

private boolean saveOnExit = true;

public WordBean()throws Exception{

if (word == null) {

word = new ActiveXComponent( Word Application );

word setProperty( Visible new Variant(false)); //不可见打开word

word setProperty( AutomationSecurity new Variant( )); //禁用宏

}

if (documents == null)

documents = word getProperty( Documents ) toDispatch();

}

/**

* 设置退出时参数

*

* @param saveOnExit

* boolean true 退出时保存文件 false 退出时不保存文件

*/

public void setSaveOnExit(boolean saveOnExit) {

this saveOnExit = saveOnExit;

}

/**

* 创建一个新的word文档

*

*/

public void createNewDocument() {

doc = Dispatch call(documents Add ) toDispatch();

selection = Dispatch get(word Selection ) toDispatch();

}

/**

* 打开一个已存在的文档

*

* @param docPath

*/

public void openDocument(String docPath) {

closeDocument();

doc = Dispatch call(documents Open docPath) toDispatch();

selection = Dispatch get(word Selection ) toDispatch();

}

/**

*只读 打开一个保护文档

* @param docPath 文件全名

* @param pwd 密码

*/

public void openDocumentOnlyRead(String docPath String pwd)throws Exception {

closeDocument();

// doc = Dispatch invoke(documents Open Dispatch Method

// new Object[]{docPath new Variant(false) new Variant(true) new Variant(true) pwd}

// new int[ ]) toDispatch();//打开word文件

doc = Dispatch callN(documents Open new Object[]{docPath new Variant(false)

new Variant(true) new Variant(true) pwd new Variant(false)}) toDispatch();

selection = Dispatch get(word Selection ) toDispatch();

}

public void openDocument(String docPath String pwd)throws Exception {

closeDocument();

doc = Dispatch callN(documents Open new Object[]{docPath new Variant(false)

new Variant(false) new Variant(true) pwd}) toDispatch();

selection = Dispatch get(word Selection ) toDispatch();

}

/**

* 把选定的内容或插入点向上移动

*

* @param pos

* 移动的距离

*/

public void moveUp(int pos) {

if (selection == null)

selection = Dispatch get(word Selection ) toDispatch();

for (int i = ; i < pos; i++)

Dispatch call(selection MoveUp );

}

/**

* 把选定的内容或者插入点向下移动

*

* @param pos

* 移动的距离

*/

public void moveDown(int pos) {

if (selection == null)

selection = Dispatch get(word Selection ) toDispatch();

for (int i = ; i < pos; i++)

Dispatch call(selection MoveDown );

}

/**

* 把选定的内容或者插入点向左移动

*

* @param pos

* 移动的距离

*/

public void moveLeft(int pos) {

if (selection == null)

selection = Dispatch get(word Selection ) toDispatch();

for (int i = ; i < pos; i++) {

Dispatch call(selection MoveLeft );

}

}

/**

* 把选定的内容或者插入点向右移动

*

* @param pos

* 移动的距离

*/

public void moveRight(int pos) {

if (selection == null)

selection = Dispatch get(word Selection ) toDispatch();

for (int i = ; i < pos; i++)

Dispatch call(selection MoveRight );

}

/**

* 把插入点移动到文件首位置

*

*/

public void moveStart() {

if (selection == null)

selection = Dispatch get(word Selection ) toDispatch();

Dispatch call(selection HomeKey new Variant( ));

}

/**

* 从选定内容或插入点开始查找文本

*

* @param toFindText

* 要查找的文本

* @return boolean true 查找到并选中该文本 false 未查找到文本

*/

@SuppressWarnings( static access )

public boolean find(String toFindText) {

if (toFindText == null || toFindText equals( ))

return false;

// 从selection所在位置开始查询

Dispatch find = word call(selection Find ) toDispatch();

// 设置要查找的内容

Dispatch put(find Text toFindText);

// 向前查找

Dispatch put(find Forward True );

// 设置格式

Dispatch put(find Format True );

// 大小写匹配

Dispatch put(find MatchCase True );

// 全字匹配

Dispatch put(find MatchWholeWord True );

// 查找并选中

return Dispatch call(find Execute ) getBoolean();

}

/**

* 把选定选定内容设定为替换文本

*

* @param toFindText

* 查找字符串

* @param newText

* 要替换的内容

* @return

*/

public boolean replaceText(String toFindText String newText) {

if (!find(toFindText))

return false;

Dispatch put(selection Text newText);

return true;

}

/**

* 全局替换文本

*

* @param toFindText

* 查找字符串

* @param newText

* 要替换的内容

*/

public void replaceAllText(String toFindText String newText) {

while (find(toFindText)) {

Dispatch put(selection Text newText);

Dispatch call(selection MoveRight );

}

}

/**

* 在当前插入点插入字符串

*

* @param newText

* 要插入的新字符串

*/

public void insertText(String newText) {

Dispatch put(selection Text newText);

}

/**

*

* @param toFindText

* 要查找的字符串

* @param imagePath

* 图片路径

* @return

*/

public boolean replaceImage(String toFindText String imagePath) {

if (!find(toFindText))

return false;

Dispatch call(Dispatch get(selection InLineShapes ) toDispatch()

AddPicture imagePath);

return true;

}

/**

* 全局替换图片

*

* @param toFindText

* 查找字符串

* @param imagePath

* 图片路径

*/

public void replaceAllImage(String toFindText String imagePath) {

while (find(toFindText)) {

Dispatch call(Dispatch get(selection InLineShapes ) toDispatch()

AddPicture imagePath);

Dispatch call(selection MoveRight );

}

}

/**

* 在当前插入点插入图片

*

* @param imagePath

* 图片路径

*/

public void insertImage(String imagePath) {

Dispatch call(Dispatch get(selection InLineShapes ) toDispatch()

AddPicture imagePath);

}

/**

* 合并单元格

*

* @param tableIndex

* @param fstCellRowIdx

* @param fstCellColIdx

* @param secCellRowIdx

* @param secCellColIdx

*/

public void mergeCell(int tableIndex int fstCellRowIdx int fstCellColIdx

int secCellRowIdx int secCellColIdx) {

// 所有表格

Dispatch tables = Dispatch get(doc Tables ) toDispatch();

// 要填充的表格

Dispatch table = Dispatch call(tables Item new Variant(tableIndex))

toDispatch();

Dispatch fstCell = Dispatch call(table Cell

new Variant(fstCellRowIdx) new Variant(fstCellColIdx))

toDispatch();

Dispatch secCell = Dispatch call(table Cell

new Variant(secCellRowIdx) new Variant(secCellColIdx))

toDispatch();

Dispatch call(fstCell Merge secCell);

}

/**

* 在指定的单元格里填写数据

*

* @param tableIndex

* @param cellRowIdx

* @param cellColIdx

* @param txt

*/

public void putTxtToCell(int tableIndex int cellRowIdx int cellColIdx

String txt) {

// 所有表格

Dispatch tables = Dispatch get(doc Tables ) toDispatch();

// 要填充的表格

Dispatch table = Dispatch call(tables Item new Variant(tableIndex))

toDispatch();

Dispatch cell = Dispatch call(table Cell new Variant(cellRowIdx)

new Variant(cellColIdx)) toDispatch();

Dispatch call(cell Select );

Dispatch put(selection Text txt);

}

/**

* 获得指定的单元格里数据

*

* @param tableIndex

* @param cellRowIdx

* @param cellColIdx

* @return

*/

public String getTxtFromCell(int tableIndex int cellRowIdx int cellColIdx) {

// 所有表格

Dispatch tables = Dispatch get(doc Tables ) toDispatch();

// 要填充的表格

Dispatch table = Dispatch call(tables Item new Variant(tableIndex))

toDispatch();

Dispatch cell = Dispatch call(table Cell new Variant(cellRowIdx)

new Variant(cellColIdx)) toDispatch();

Dispatch call(cell Select );

String ret = ;

ret = Dispatch get(selection Text ) toString();

ret = ret substring( ret length() ); //去掉最后的回车符;

return ret;

}

/**

* 在当前文档拷贝剪贴板数据

* @param pos

*/

public void pasteExcelSheet(String pos) {

moveStart();

if (this find(pos)) {

Dispatch textRange = Dispatch get(selection Range ) toDispatch();

Dispatch call(textRange Paste );

}

}

/**

* 在当前文档指定的位置拷贝表格

*

* @param pos

* 当前文档指定的位置

* @param tableIndex

* 被拷贝的表格在word文档中所处的位置

*/

public void copyTable(String pos int tableIndex) {

// 所有表格

Dispatch tables = Dispatch get(doc Tables ) toDispatch();

// 要填充的表格

Dispatch table = Dispatch call(tables Item new Variant(tableIndex))

toDispatch();

Dispatch range = Dispatch get(table Range ) toDispatch();

Dispatch call(range Copy );

if (this find(pos)) {

Dispatch textRange = Dispatch get(selection Range ) toDispatch();

Dispatch call(textRange Paste );

}

}

/**

* 在当前文档指定的位置拷贝来自另一个文档中的表格

*

* @param anotherDocPath

* 另一个文档的磁盘路径

* @param tableIndex

* 被拷贝的表格在另一格文档中的位置

* @param pos

* 当前文档指定的位置

*/

public void copyTableFromAnotherDoc(String anotherDocPath int tableIndex

String pos) {

Dispatch doc = null;

try {

doc = Dispatch call(documents Open anotherDocPath)

toDispatch();

// 所有表格

Dispatch tables = Dispatch get(doc Tables ) toDispatch();

// 要填充的表格

Dispatch table = Dispatch call(tables Item

new Variant(tableIndex)) toDispatch();

Dispatch range = Dispatch get(table Range ) toDispatch();

Dispatch call(range Copy );

if (this find(pos)) {

Dispatch textRange = Dispatch get(selection Range )

toDispatch();

Dispatch call(textRange Paste );

}

} catch (Exception e) {

e printStackTrace();

} finally {

if (doc != null) {

Dispatch call(doc Close new Variant(saveOnExit));

doc = null;

}

lishixinzhi/Article/program/Java/hx/201311/26342

Word怎么生成目录

先下载jacob_1.10.1.zip。

解压后将jacob.dll放到windows/system32下面或\j2sdk\bin下面。

将jacob.jar加入项目。

/*

* Java2word.java

*

* Created on 2007年8月13日, 上午10:32

*

* To

change this template, choose Tools | Template Manager

* and open the template

in the editor.

*/

/*

* 传入数据为HashMap对象,对象中的Key代表word模板中要替换的字段,Value代表用来替换的值。

*

word模板中所有要替换的字段(即HashMap中的Key)以特殊字符开头和结尾,如:$code$、$date$……,

以免执行错误的替换。

*

所有要替换为图片的字段,Key中需包含image或者Value为图片的全路径(目前只判断文件后缀名为:.bmp、

.jpg、.gif)。

*

要替换表格中的数据时,HashMap中的Key格式为“table$R@N”,其中:R代表从表格的第R行开始替换,N代表

word模板中的第N张表格;Value为ArrayList对象,ArrayList中包含的对象统一为String[],一条String[]代

表一行数据,ArrayList中第一条记录为特殊记录,记录的是表格中要替换的列号,如:要替换第一列、第三列、

第五列的数据,则第一条记录为String[3]

{“1”,”3”,”5”}。

文档怎样生成目录

如果电脑里装的有WORD,可以通过JS新建一个WORD,并把页面文件拷贝进去。

我这有操作Excel的,word的差不多。

以上就是Java生成Word文档目录的全部内容,其次每次生成word文档以后弹出对话框(无法保存此文件,因为它已在别处打开(C:\\STARTUP\Powerword.dot)),出现此问题就需要把C:\Documents and Settings\当前用户名\Application Data\Microsoft\Word\STARTUP下的Powerword.dot文件删除,每次遇到此问题就需要删除文件来解决,十分不方便。

猜你喜欢